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

时间:2021-11-18 22:29:56

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();//这个就获得了字符串所占的像素宽度