QT4中文显示

转载 2012年03月28日 08:15:35
相信搞过QT4.5文件系统的朋友都遇到过中文字体的问题,要不是显示乱码,就是显示空白。以前遇到过这样的问题,来天嵌的官网查了解决办法,找不到有效的办法,论坛有个QT程序,说是支持中文的,是管理员发的,不过有缺陷,而且也无法显示中文,后来经过努力,解决了问题。不过今天又搞这个的时候,由于之前的工程不知道怎么搞的不见了,又遇到了问题,几经周折,终于搞掂。所以我要把自己的解决问题的经历和方法放到论坛上,和大家一起交流,并且以后再遇到问题可以上来找找。哈哈。
总结如下:

1)、天嵌公司的给的QT4.5文件系统是有中文字库的,不过我认为有缺陷,之前我说没有,现在发现在/opt/qt-4.5/lib/fonts里面有个unifont文件。调用这个字体就可以显示中文了。代码如下:
int main(int argc, char *argv[])
{
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QApplication a(argc, argv);
    Widget w;
    w.setFont(QFont("unifont",14,QFont::Normal));//这行是关键,没有这行是显示不了中文的。论坛给的那个程序就是没有这句。所以在板子上运行肯定是有问题的。论坛的那个QT程序大概是在PC机上模拟的。毕竟是模拟啊。
    w.setWindowTitle(QObject::tr("为什么why?"));
    w.show();
    return a.exec
}
2)、自己去下载一个字库,我下载了一个非官方的字库,叫文泉驿,这个字库当然比那个UNIFONT字库要好,字体比那个要漂亮,而且unifont的字有些大有些小,很不美观。用我自己下载的非官方的文泉驿字库,和文件系统自带的字库都是无法更改字体大小的。也就是说:w.setFont(QFont("unifont",14,QFont::Normal));无论那个数字设置成多少都是没用的。字体统一大小,而且还有个纠结的问题,窗口的标题也无法正常显示。w.setWindowTitle(QObject::tr("为什么why?"));也就是说,只能显示why?,不能显示“为什么?”。

3)、终极解决办法,去文泉驿官方网http://wenq.org/下载一个字库回来。里面有很多字库,我选择常用的正黑。正黑字库文件下载地址是:[url]http://downloads.sourceforge.net/project/wqy/wqy-zenhei/0.8.38%20(Pangu)/wqy-zenhei-0.8.38-1.tar.gz?use_mirror=nchc&18950117


下载回来的文件里面有这样一个文件:wqy-zenhei.ttc,我自己改了它的名字,叫zhenghei.ttc(这个由你喜欢),然后放到/opt/qt-4.5/lib/fonts里面,再在主函数里面修改字库的ID:
int main(int argc, char *argv[])
{
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QApplication a(argc, argv);
    Widget w;
    w.setFont(QFont("zhenghei",14,QFont::Normal));//这行是关键,没有这行是显示不了中文的。
    w.setWindowTitle(QObject::tr("为什么why?"));
    w.show();
    return a.exec
}
ok!搞掂了,板子上的QT终于可以显示中文了。由于文件比较大,最好可以去官方网站下载。我这里只贴出工程文件。

相关文章推荐

socket关闭后无法绑定端口的问题

之前有所耳闻,没有去注意,直到被问到这个问题. 如果一个socket绑定了某个端口,该socket正常关闭或程序退出后,在一段时间内该端口依然保持被绑定的状态,其他程序(或者重新启动的原程序)无法绑...

vxworks互斥的三种方法

VxWorks提供两个重要API:   (1)intLock():使中断禁止 ----类似EA=0   (2)intUnlock():开中断     ----类似EA=1  ...

Qt4 显示中文(win7/linux/ARM测试成功)

编程环境:        Windows win7_64bit + Qt4.8.4(for VS2010)        VM虚拟机+linux RedHat 6.0 + Qt4.5.3(X11)...

Qt4 中文处理

Qt 中文显示 关于Qt 中文显示的事情网上也有一些帖子,经过自己实践后记录下来。。。 #include #include "mainwindow.h" #include int main(in...
  • Linmson
  • Linmson
  • 2012年09月01日 14:55
  • 948

Qt4 使用 MySQL 的中文问题解决方法

MySQL4.1及其以上版本中中文问题比较麻烦,有时候在QT中使用会出现问号或者乱码,现在说明一下在Qt中如何正确地配合使用。 先在MySQL中建表,使用中文,一般情况下就两种,GB(GB2312或...

qt4中文教程(word版本)

  • 2010年07月18日 14:59
  • 758KB
  • 下载

QT4中文第二版.part10

  • 2011年04月24日 15:32
  • 14MB
  • 下载

Qt creator 如何支持中文编码(Qt4和Qt5解决方法不同)

一、首先讲Qt5:     首先Qt5是直接支持中文的,用tr(“输入中文即可”)包含就能显示中文(不用像Qt4一样添加修改代码)     ps:但是我里边有中文符号“:”冒号时就会报错,,求大神...
  • hyqsong
  • hyqsong
  • 2015年07月30日 10:46
  • 2663

QT4中文第二版.part07

  • 2011年04月24日 15:02
  • 14MB
  • 下载

QT4中文第二版.part05

  • 2011年04月24日 14:36
  • 14MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:QT4中文显示
举报原因:
原因补充:

(最多只允许输入30个字)