• 11063阅读
  • 10回复

求qt/e在arm板上显示中文的方法 [复制链接]

上一主题 下一主题
离线newalan
 

只看楼主 倒序阅读 楼主  发表于: 2008-04-15
— 本帖被 XChinux 执行加亮操作(2008-04-15) —
求qt/e在arm板上显示中文的方法
arm板是2410的,我在pc上的交叉编译环境是基于qt/e 2.3.10的,急求显示中文的方法(已能显示英文,只显示一个button,button上有英文字),最好贴写源码。
板子的/usr/qt/etc/fonts下有字体文件fontdir, 里面有几个helvetica的字体,比如其中一行为
helvetica  helvetica_120_50.qpf  QPF  n  50  120  u
不知怎么设置,怎么编写代码,请赐教(源码)
我用下面的方法总是出现段错误,没法运行。
QTextCodec *code = QTextCodec::codecForName("GBK");
QString unistr = code->toUnicode("你好");
离线浪漫天使
只看该作者 1楼 发表于: 2008-04-15
QTextCodec *code = QTextCodec::codecForName("GBK");
这个code返回是空的 可能是不支持gbk,你可以用翻译的方法来达到中文的效果啊
离线badicoubid
只看该作者 2楼 发表于: 2008-04-15
TO LZ:
第一:你要有中文字体,如unifont

第二:你要设置你的显示控件使用中文字体
QFont f;
f.setFamily("unifont");
f.setPointSize(16);

label->setFont(f) ;


第三:qApp->setDefaultCodec(QTextCodec::codecForName("GBK"));
离线newalan

只看该作者 3楼 发表于: 2008-04-16
引用第2楼badicoubid于2008-04-15 15:45发表的  :
TO LZ:
第一:你要有中文字体,如unifont
第二:你要设置你的显示控件使用中文字体
QFont f;
f.setFamily("unifont");
f.setPointSize(16);
label->setFont(f) ;
第三:qApp->setDefaultCodec(QTextCodec::codecForName("GBK"));
.......

谢谢你的回答!
我在pc端的qvfb下先争取中文能正确显示(现在还是乱码)
1 有中文字体unifont

3 这个函数setDefaultCodec() 已经处于obsolete(废弃)状态,不能用了

能不能多贴点完整的源码,我接触的不过,代码太少了理解不了
离线newalan

只看该作者 4楼 发表于: 2008-04-16
谁有能正常显示中文的qt/e 程序源码?
发给我几个看看,搞明白后我将写个帖子以告后来者,多谢大家!
我的邮箱是 zfzhang@hitic.ia.ac.cn
只要是能在arm板上正常显示中文即可,不管程序中使用了什么方法。
复杂的别人的源码也可以,我自己一直没找到。
谢谢诸位!
离线owenbbkp

只看该作者 5楼 发表于: 2008-04-17
代码和一些介绍:
http://blog.chinaunix.net/u2/66512/showart_545135.html
代码是Qtopia Core版本的,你需要稍微改一下
离线newalan

只看该作者 6楼 发表于: 2008-04-23
引用第5楼owenbbkp于2008-04-17 20:30发表的  :
代码和一些介绍:
http://blog.chinaunix.net/u2/66512/showart_545135.html
代码是Qtopia Core版本的,你需要稍微改一下

我想知道,如果读取一个文本文件中的中文并显示(文本文件的编码是UTF8)怎么实现,这种情况恐怕不能用qt的国际化方法了吧?
离线kjpioo

只看该作者 7楼 发表于: 2009-02-17
引用第6楼newalan于2008-04-23 14:39发表的  :
我想知道,如果读取一个文本文件中的中文并显示(文本文件的编码是UTF8)怎么实现,这种情况恐怕不能用qt的国际化方法了吧?
linux qt
离线kjpioo

只看该作者 8楼 发表于: 2009-02-17
这种情况下你直接读取文本信息,保存在QString对象中,再直接显示这个QString 对象就可以了。
linux qt
离线aven152273

只看该作者 9楼 发表于: 2009-02-17
QTextCodec *code = QTextCodec::codecForName("UTF8");
QString unistr = code->toUnicode("你好");
label->setText(unistr );
离线aven152273

只看该作者 10楼 发表于: 2009-02-17
如果编码不是utf8的话。恐怕还需要再用fromUnicode()函数再转化一下
快速回复
限100 字节
 
上一个 下一个