Qt下中文乱码问题的解决办法

Qt在设计开始就考虑了对多语言的支持.因此对中文的支持还是比较容易.很容易编写出多语言的程序来.关于Qtopia /QT的中文支持.主要有如下情况

  1.在自己的QT程序中加入中文支持.

  2.Qtopia 的桌面显示中文

  QT应用程序多语言支持的思路是,跟WINDOWS非常象。就是非英语的字符串不编译在程序当中。而是保存在一个字典文件里。在程序中使用是这个字典的索引。这样在不修改的程序的情况,只要换成不同的字典文件就会支持不同语言的显示。
    在WINDOWS程序中,这个字符串是资源文件(*.res),这个文件最后被链接到可执行文件当中。在程序中使用整数类型的资源ID,来从资源文件中,通过API函数LoadString()来从资源文件取出字符串。
    在QT也采用类似的流程。字符串保存在翻译文件(*.ts)当中,发布时它将会转换成二进制的 .qm文件。这个文件不需要链接可执行文件当中。程序中使用英文字符串作为字典的索引。使用tr()函数从翻译文件检索相应的字符串。

这里我只总结第一种方法。(我项目的名称为mutilDialog)

   一,首先需要手工修改pro文件.增加ts文件的选项,在pro要增加一项 TRANSLATIONS = mutilDialog.ts

   二,用QT提供的工具lupdate生成一个ts文件。在命令行输入

     lupdate mutilDialog.pro

     会自动生成一个mutilDialog.ts文件。ts文件其实就是简单的xml语言写的一个文件。

 

   三,用QT自带的工具linguist翻译mutilDialog.ts对应的词。你也可以直接打开mutilDialog.ts文件自己手动修改。

   四,用QT提供的工具将mutilDialog.ts编译成二进制的mutilDialog.qm文件。在命令行输入 lrelease mutilDialog.ts就会生成相应的文件了。

   五,在主程序中加入对Qtranslator类的支持。并且装入相应的qm文件

#include <qapplication.h>
#include <qtranslator.h>

 

int main( int argc, char ** argv )
{
    QApplication a( argc, argv );

     .......
    QTranslator translator(0);
    translator.load(QString("mutilDialog.qm"));
    a.installTranslator(&translator);
    

  ................

    return a.exec();
}

你可能感兴趣的:(Qt下中文乱码问题的解决办法)