获得qstring字符串的长度(字节长度和所占的像素宽度)

1.QString 用length()返回字符串的长度,即字节数, 在中英文字符都是以 Unicode 方式编码的,所以,无论中英文都算的长度为 1。

想要取得英文长度为 1 中文长度为 2 的总长度,必须用toLocal8bit()。具体使用方法如下所示:

QString s = "ab中文";

int length = s.length(); //length = 4;

length = s.toLocal8Bit().length(); //length = 6

2.以上都是获取的字符串字节的长度,但是如果要在屏幕上显示,获取所占的像素个数,这样获取是不对的,应该按如下方式:

QFont wordfont;

wordfont.setFamily("宋体");

wordfont.setPointSize(10);

QFontMetrics fm(wordfont);

m_pLabel->setText("名称不合法");

QRect rec = fm.boundingRect( m_pLabel->text());

int ii = rec.width();//这个就获得了字符串所占的像素宽度

时间: 2024-10-12 17:37:38

获得qstring字符串的长度(字节长度和所占的像素宽度)的相关文章

20170225 ABAP获取字符串长度/字节长度

函数YGET_CHAR_LONG: FUNCTION YGET_CHAR_LONG. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" VALUE(STRING) TYPE STRING OPTIONAL *" EXPORTING *" VALUE(STR) TYPE STRING *&qu

按字节长度截取字符串

有时我们需要按照字节长度来截取字符串,但是又不希望把中文给截取散.下面提供一下utf-8的截取方法: /** * 按字节长度截取字符串 * @param orgin 需要截取的字符串 * @param length 字节长度 * @param charsetName 编码 * @return 截取后的字符串 */public static String subStringb(String orgin, int length, String charsetName) { String result

js获取字符串字节长度

先上代码 //返回val的字节长度 function getByteLen(val) { var len = 0; for (var i = 0; i < val.length; i++) { if (val[i].match(/[^\x00-\xff]/ig) != null) //全角 len += 2; else len += 1; } return len; } //返回val在规定字节长度max内的值 function getByteVal(val, max) { var return

求一个字符串的字节长度

编写一个方法 求一个字符串的字节长度 假设:一个英文字符占用一个字节,一个中文字符占用两个字节 function GetBytes(str){ var len = str.length; var bytes = len; for(var i=0; i<len; i++){ if (str.charCodeAt(i) > 255) bytes++; } return bytes; } alert(GetBytes("你好,as"));

截取指定长度字节数后的字符串(Java方法实例,注:同样思路js也适用)

可能之前是习惯了上网查看其他人的资料,当我遇到这样的问题的时候,我第一时间想到的就是上网查个现成的方法直接用:可是查阅网上各大论坛以及其他资料之后,发现大部分人都是照搬其他人的,这种情况很严重,而且个人感觉很不利于个人技术的成长:当然更重要的原因是,我感觉网上的大部分方法都把问题给复杂化了,无论是用js方法截取还是通过封装Java类,都感觉繁琐了些:为此我自己写了个相对来说较为简单的方法,其实很简单的思路和方法就能实现,下面奉上我自己的方法,希望大家多多指正不足之处(支持全角输入的字符和汉字等,

c# 判断字符是否是全角, 获取字符串的字节数 , 获取字符串指定长度字节数的字符串

1 Encoding.Default.GetByteCount(checkString);  =2 全角 =1 半角 /// <summary> /// 获取字符串的字节长度 /// </summary> /// <param name="str"></param> /// <returns></returns> public static int GetStringByteLength(this string s

[email&#160;protected]求一个字符串的字节长度

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>@求一个字符串的字节长度</title></head><body></body> <script> function GetBytes(str) { var len = str.length; var bytes

获取字符串长度、字符长度、字节长度

度量快速开发平台中基础函数中有一个  len  的获取字符长度函数.具体用法是:len ("123Abc字符串") 这个方法得到的结果是:9 即一共有多少个字符,没有区分单字节与双字节的情况. 如果某一个字段设置的长度为9,那刚才这个字符串保存到数据库的时候,会提示字符串过长,因为数据库中一般是按照字节长度来判断的. 度量快速开发平台中,是没有直接提供这个获取字符串字节长度得函数.用户想知道这个字符串占用了多少字节,在平台中如何来得到呢? 我们知道,度量快速开发平台是与c#完美结合使用

C# 按指定(字节)长度截取字符串

/// <summary> /// 按指定(字节)长度截取字符串 /// </summary> /// <param name="str">源字符串</param> /// <returns>string</returns> private string CutStringByte(string str) { if (string.IsNullOrEmpty(str)) { return "";