天天看點

如何修改Qt标準對話框的文字(例如,英文改成中文)

此篇文章參考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标準對話框的文字(例如,英文改成中文)
如何修改Qt标準對話框的文字(例如,英文改成中文)
如何修改Qt标準對話框的文字(例如,英文改成中文)

解決方案如下:

簡體中文的解決思路是打開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[])

{undefined

   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();

}

最終效果圖:

如何修改Qt标準對話框的文字(例如,英文改成中文)
如何修改Qt标準對話框的文字(例如,英文改成中文)
如何修改Qt标準對話框的文字(例如,英文改成中文)

如果軟體想動态得切換語言,則需要定義一個全局函數供調用,舉例如下:

QTranslator g_tran;//必須設定成全局變量,如果是局部變量,設定将失效。

void setLanguage(int lan)//全局函數,可供其他檔案調用

   bool ok = false;

   if (lan == 1)//中文

   {undefined

       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);

   setLanguage(1);//調用全局函數