Qt下中文亂碼問題的解決辦法

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.