如何修改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安裝目錄下的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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM