Qt顯示中文的問題詳解


開發環境:

開發板:Qt4.8.0+linux2.6.30


一、要在Qt的應用程序中顯示漢字,需有2個條件需滿足:

 1.漢字庫文件,如“宋體”simsun.ttc,如果Qt找不到漢字庫,或者要顯示的漢字不再Qt能找到的漢字庫中,則,顯示的是空白,即不顯示任何東西;

    可以用WindowsXp下的字庫文件,在windows/fonts目錄下,直接拷貝到Qt的lib/fonts目錄下;

 2.顯示漢字的編碼要告訴Qt

    如果使用tr轉換顯示的漢字,則在類的構建函數中添加

    ui.setupUi(this);

    QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));//tr使用的編碼

    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8"));//QString使用的編碼,沒有這一條

                              //則QString str(tr(“中文”)),能正常顯示,QString str(“中文”);會顯示亂碼,

    另外要特別注意的是這兩條語句放置的位置,在構造函數中,只對當前類有效,放到main函數中,無效

    這樣,在該類的後面使用tr轉換的字符串,就會認爲是utf8編碼的了,

二、在程序中顯示漢字

   1.在顯示漢字的字符串,需用tr這個宏進行轉換,如:

      QLabel state;

      state.setText(tr("你好"));

     2.



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章