QT中文显示

 QT是跨平台的,我的工作环境,有三个qmake,分别是X11,qtopia-core,qtopia-core-arm。X11用来编译PC可执行的QT程序,qtopia-core编译的程序可在电脑的qvfb中仿真ARM上显示效果,qtopia-core-arm只可以在arm开发板上运行。

    正常显示中文总是遇到问题,花了一阵子搞明白了。

    有两种方法正常显示中文,其实都不难。

    1.用到的字符串都用英文表示,然后利用国际化翻译软件Linguist处理,添加*.qm文件,具体见以前的帖子。粗略理解,这种方法的可移植性好,国际化也比较方便,只要添加不同的*.qm字体文件就好了。

    2.用到的字符串直接用中文表示。这时要重点注意编码和字体,经常会出错。linux系统下大多都是utf8编码方式,如果自己的系统不是,就显示不正常,

    QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));

    可以将utf8换成自己系统的编码方式,例如,XP下一般是gb18030,gb2312,big5或者GBK等等很多。

    如果QT界面显示的全是乱码,那么这时应该就是编码的问题。

    如果QT界面显示的全是空白,那么这时应该就是字体的问题。

    qtopia中可用的字体有限,在qtopia/lib/font里包含了所有可用的字体,可以显示中文的有unifont(只有一种大小),文泉驿(可选择的大小比较多)。

    app.setFont(QFont("wenquanyi", 12, 50));

    有时你会发现X11编译的程序,可以正常显示中文。但是用qtopia-core重新编译一次,确显示不了。因为X11有默认的字体,只要设置了正确的utf8的编码方式,不设置字体也可以正常显示(在编码是UTF8的LINUX下)。(我怀疑QT默认的编码方式是Latin1,待验证)。但是,qtopia-core编译的程序,必须明确显示用的字体,和编码方式。

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    a.setFont(QFont("wenquanyi", 12, 50));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
    home w;
    w.show();

    return a.exec();
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值