Chinaunix首页 | 论坛 | 博客
  • 博客访问: 401329
  • 博文数量: 29
  • 博客积分: 2091
  • 博客等级: 大尉
  • 技术积分: 463
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-05 10:53
文章分类
文章存档

2012年(2)

2011年(6)

2010年(12)

2009年(9)

我的朋友

分类: LINUX

2010-05-18 23:50:42

QFileSystemModel QDirModel显示信息的中文化方法

这两个QT类,用qtreeview可以显示文件的详细信息。做到这点是很简单的。网上有很多资料不多说了。

我在实现了这个方法后,却发现一个问题,那就是文件的标题栏和详细信息都是英文的,那么怎么让它中文化呢。
这就要用到QT的国际化方法。
我用的是类似如下的代码
   QApplication a;
   QTranslator translator(0);
    translator.load("filemanager_zh",".");
    a.installTranslator(&translator);
但是这样只能中文化你自已的一些信息,而不能中文化QT自身的信息。其实在qt/translate目录下有一文件qt_zh_CN.qm,就是QT自身中文翻译文件。将它拷贝到你的项目内,并
加入如下代码。
    QTranslator qttranslator(0);
    qttranslator.load("qt_zh_CN",".");
    a.installTranslator(&qttranslator);
这样,英文信息基本就中文化了。其实,这样,不仅是文件的详细信息被中文化,QT自带的各种控件的信息也都中文化了,如QFileDialog,QMessage等。
但是,QT提供的这个文件没有包括所有的信息翻译,比如文件的详细信息中,Folder就没有翻译。
查了半天,发现这个信息是包含在qt/src/gui/itemviews/qfileiconprovider.cpp中的,我们可以用lupdate qfileiconprovider.cpp -ts qfile_info_zh.ts生成ts文件。再用
linguist对ts进行翻译,再发布,这样就会生成qfile_info_zh.qm文件,把它拷贝到项目下,再加入如下代码

    QTranslator fileinfotranslator(0);
    fileinfotranslator.load("qfile_info_zh",".");
    a.installTranslator(&fileinfotranslator);
好了,世界清静了,所有的英文信息都变成中文的了。
问题的解决看似很容易,可要找到这个方法却很不容易,花费了不少时间,不过,在此过程中,我对QT的国际化方法有了一定的了解,也算值了。
    hugerat 2010.05.18
阅读(3622) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-11-01 15:06:43

谢谢LZ,此博文帮我解决了filesystemmodel中文显示的问题。不简单,研究的挺深,再次感谢。

chinaunix网友2010-07-28 20:07:59

你好~~~ 我想请问 translator.load("filemanager_zh",".")里面的 filemanager_zh,还有下面的qt_zh_CN qfile_info_zh这些是怎么来的呢 自己命名的吗?