此篇文章參考qtcn論壇整理而成,因為文字和圖片是本人親自組織,所以仍算原創。
http://www.qtcn.org/bbs/read-htm-tid-30650.html
http://blog.csdn.net/yangxiao_0203/article/details/7488967
如圖所示,QT自帶的內建標准對話框QFontDialog、QColorDialog、QMessageBox。默認的文字全是英文的。QLineEdit和QTextEdit的右鍵菜單,默認的文字也全是英文的。
請問,如何可以把文字修改成中文或其他語言文字?
解決方案如下:
簡體中文的解決思路是打開Qt安裝目錄下的translations,找到qt_zh_CN.qm和qt_zh_CN.ts。
直接用qt_zh_CN.qm即可,如果確實有翻譯不完全的,打開qt_zh_CN.ts翻譯一下重新生成.qm文件即可。
即:把translation/qt_zh_CN.qm加載到QTranslator中。
其他國語言方法類似。
參考源碼:
#include "mainwindow.h"
#include <QApplication>
#include <QTranslator>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//加載Qt標准對話框的中文翻譯文件
QTranslator tran;
bool ok = tran.load("qt_zh_CN.qm", "C:\\qt\\4.8.5_VS2010\\translations\\");//注,這里使用的是絕對路徑,建議把.qm拷貝到工程目錄下,然后使用相對路徑.
a.installTranslator(&tran);
//加載用戶自定義的界面翻譯文件
QTranslator user;
ok = user.load("user_zh.qm", ":/");
a.installTranslator(&user);
//設置全局文字大小,非必需,根據自身情況使用
QFont font = a.font();
font.setPointSize(9);
a.setFont(font);
MainWindow w;
w.show();
return a.exec();
}
最終效果圖:
如果軟件想動態得切換語言,則需要定義一個全局函數供調用,舉例如下:
#include "mainwindow.h"
#include <QApplication>
#include <QTranslator>
QTranslator g_tran;//必須設置成全局變量,如果是局部變量,設置將失效。
void setLanguage(int lan)//全局函數,可供其他文件調用
{
bool ok = false;
if (lan == 1)//中文
{
ok = g_tran.load("qt_zh_CN.qm", ":/lan/");//這里使用Qt資源文件,把.qm文件拷貝到項目路徑/lan之下
}
else if (lan == 2)//英文
{
ok = g_tran.load("", ":/lan/");
}
QCoreApplication::installTranslator(&g_tran);
//或者寫成qApp->installTranslator(&g_tran);
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
setLanguage(1);//調用全局函數
MainWindow w;
w.show();
return a.exec();
}
http://blog.csdn.net/libaineu2004/article/details/19030129