找回密码
 立即注册
收起左侧

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

1
回复
5808
查看
[复制链接]
累计签到:882 天
连续签到:3 天
来源: 转载 2015-7-9 11:52:28 显示全部楼层 |阅读模式
原文链接: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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

尚未签到

2015-7-9 17:06:58 显示全部楼层
不错不错
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了