• 8449阅读
  • 8回复

[提问]drawtext绘制中文文字的问题 [复制链接]

上一主题 下一主题
离线youngst
 

只看楼主 倒序阅读 楼主  发表于: 2007-09-10
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
XChinux 来帮忙看看,问题如何解决,下面有我程序的截图(附件里):



2个程序源代码相同,左边一个是在编译后在X11上运行的程序,右边个编译后在qvfb里运行的程序,为什么左边的的正常绘制中文文字,右边的不行。



在X11的是直接运行,在qvfb运行加上 -font unifont,否则,窗口的上中文都成方框。



在main.cpp也设置了字符编码:

QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));



现在不 知道问题出在哪?

我怀疑是QString 的问题,我看了 drawtext的说明,对于要绘制文字,要是QString类型,而我定义文字,是用char *,我直接把我char *直接赋值给定义一个QString 变量,然后绘制文字。不知道这样会不会又问题,如果有问题的话,应该2个程序,都无法正常绘制出中文字符啊!




请版主和其他高手帮忙,看看是什么问题? 帮忙解决一下!

我的联系方式QQ:44542201

e-mail:44542201◎163.com
[ 此贴被youngst在2007-09-10 16:45重新编辑 ]
离线XChinux

只看该作者 1楼 发表于: 2007-09-10
char *类型的字符串,看实际内容是什么编码的了,使用QTextCodec进行转变码。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线youngst

只看该作者 2楼 发表于: 2007-09-10
引用第1楼XChinux于2007-09-10 17:31发表的  :
char *类型的字符串,看实际内容是什么编码的了,使用QTextCodec进行转变码。


实际内容 ,是指什么?,我CHAR *里的中文文字吗?,我是从数据库里,读出的数据,数据库是在X11下的入的库,是不是字符编码和X11的中文字符编码一致吗?
离线XChinux

只看该作者 3楼 发表于: 2007-09-10
那我就不知道了,反正总的原则就是要使字符编码一致。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线youngst

只看该作者 4楼 发表于: 2007-09-11
谢谢版主了,我再看看
离线monkey888
只看该作者 5楼 发表于: 2007-09-12
应该是字库问题,在qvfb中没有找到对应的字库,所以会显示方框!
离线lenovosoft
只看该作者 6楼 发表于: 2007-09-13
char * 与QString的类型不同,先将char *转为 utf8,然后再转为可识别类型  fromUtf8
离线youngst

只看该作者 7楼 发表于: 2007-09-14
问题已经解决,这2天比较忙,没 上来看看,谢谢大家解答!
5楼说的很对,是字体库的问题。
我先前也是怀疑字体库的 问题,把设置字体的都注释了,后来还是出现方框,我就郁闷了,
后来看了,版主说字符编码,我把所用字符编码都看了,是一致的,后来把代码,从头到尾看了一片,发现在drawText前调用的一个函数,这个函数用到setFont,漏掉了这个注释,改了重新运行就OK了! 真晕,就这小问题整晕了!
 
离线iamafighter
只看该作者 8楼 发表于: 2008-05-17
请问楼主,你做的这个gis软件有导航功能吗?你用的是什么格式的地图啊?如果能导航,那么你是怎么进行搜索的啊,以什么信息为基础?是地图匹配法吗?
谢谢!
打工......
快速回复
限100 字节
 
上一个 下一个