一个字符串问题
一个字符串,包含汉字和英文,我想每隔三十个汉字然后插入一个换行符,问题是:假设此字符串有60个字符,前30个是汉字,后30个是英文字母,运行程序后可以讲字符串分成两行,但是第一行却比第二行长了近一倍,有什么方法可以使每隔一定长度进行换行且每行长度相差不大?代码如下:
QString cText = “阿斯顿飞啊分啊顶峰阿二等功额阿斯顿飞啊啊啊啊啊的份额鹅鹅鹅鹅eeeeeeeeeeeeeeeeeeeeeeeeeeeeee”;
int length = cText.length();
for (int i=0;i<length;i++)
{
//每30个汉字自动换行
if (j==30&&cText[i]!='\n')
{
cText.insert(++i,tr("\n"));
j=0;
}
else if (cText[i]=='\n')
{
j=0;
}
j++;
}
运行结果如下:
阿斯顿飞啊分啊顶峰阿二等功额阿斯顿飞啊啊啊啊啊的份额鹅鹅鹅鹅
eeeeeeeeeeeeeeeeeeeeeeeeeeeeee
第一行与第二行差距太大,有什么方法可以使两行能够长度相同?
[解决办法]
这个是因为每个汉字在屏幕上显示的宽度是英文的两倍造成的,如果你的系统中确保只有英文和中文那可以根据每个字符的unicode做区分。但如果系统中还有其他的文字,这个逻辑就复杂了,尽管本质是一样的...
[解决办法]
类似于字处理软件的 段落折行,可以参考 http://qt-project.org/doc/qt-4.8/qfontmetrics.html