[转]QFileSystemModel/QDirModel显示信息的中文化方法
QFileSystemModel QDirModel这两个QT类,用qtreeview可以显示文件的详细信息。
在实现了这个方法后,却发现一个问题,那就是文件的标题栏和详细信息都是英文的,那么怎么让它中文化呢。
这就要用到QT的国际化方法。代码如下:
QApplication a;
QTranslator translator(0);
translator.load("filemanager_zh",".");
a.installTranslator(&translator);
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);
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);
fileinfotranslator.load("qfile_info_zh",".");
a.installTranslator(&fileinfotranslator);
所有的英文信息都变成中文的了。

浙公网安备 33010602011771号