一叶知秋 发表于 2015-7-9 11:52:28

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

原文链接:http://blog.chinaunix.net/uid-11153816-id-2903464.html

我做的结果:

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

Joey_Chan 发表于 2015-7-9 17:06:58

不错不错
页: [1]
查看完整版本: QFileSystemModel QDirModel显示信息的中文化方法