成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Qt中文顯示問題解決

移動開發
QT默認的編碼(unicode)是不能顯示中文的,可能由于windows的默認編碼的問題,windows默認使用(GBK/GB2312/GB18030),所以需要來更改QT程序的編碼來解決中文顯示的問題。

Qt中文顯示問題的問題,很多編程人員容易頭疼的問題,小細節容易忽略,剛剛編寫好的程序,運行之后可能會出現不顯示或者亂碼這種情況,QT默認的編碼(unicode)是不能顯示中文的,可能由于windows的默認編碼的問題,windows默認使用(GBK/GB2312/GB18030),所以需要來更改QT程序的編碼來解決中文顯示的問題。

QT中有專門的一個類來處理編碼的問題(QTextCodec)。

在QT3中,QApplication可以設置程序的默認編碼,但是在QT4中已經沒有了該成員函數。可以以下的這些方法來設置編碼。

1. 設置QObject的成員函數tr()的編碼。

 

  1. QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));  
  2. Searches all installed QTextCodec objects and returns the one which best matches name; the match is case-insensitive.   
  3. Returns 0 if no codec matching the name name could be found. 

其中的codecForName函數是根據參數中的編碼名稱,在系統已經安裝的編碼方案中需找***的匹配編碼類型,該查找是大小寫不敏感的。如果沒有找到,就返回0。

具體的轉換代碼看下面:

  1. #include <QApplication> 
  2. #include <QTextCodec> 
  3. #include <QLabel> 
  4. int main(int argc,char *argv[])  
  5. {  
  6.    QApplication app(argc,argv);  
  7.    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));  
  8.    QLabel hello(QObject::tr("你好"));  
  9.    hello.setWindowTitle(QObject::tr("終于搞定中文"));  
  10.    hello.show();  
  11.    return app.exec();  

注意:

setCodecForTr一定要在QApplication后面。不然沒有效果。而且這種方法只會轉換經過tr函數的字符串,并不轉換不經過tr函數的字符串。

技巧:

可以用codecForLocale函數來返回現在系統的默認編碼,這樣更容易做多編碼的程序而不用自己手動來更改具體的編碼。

2. 使用QString的fromLocal8Bit()函數

這個方法是最快的,系統直接自動將char *的參數轉換成為系統默認的編碼,然后返回一個QString。

  1. #include <QApplication> 
  2. #include <QTextCodec> 
  3. #include <QLabel> 
  4. int main(int argc,char *argv[])  
  5. {  
  6.    QApplication app(argc,argv);  
  7. // QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));  
  8. // QTextCodec::setCodecForTr(QTextCodec::codecForLocale());  
  9. // QLabel hello(QObject::tr("你好"));  
  10. // QLabel hello("你好");  
  11. // hello.setWindowTitle(QObject::tr("終于搞定中文"));  
  12.    QString str;  
  13.    strstr = str.fromLocal8Bit("哈哈哈");  
  14.    hello.setWindowTitle(str);  
  15.    hello.show();  
  16.    return app.exec();  

3. 用QTextCodec的toUnicode方法來顯示中文

  1. #include <QApplication> 
  2. #include <QTextCodec> 
  3. #include <QLabel> 
  4. int main(int argc,char *argv[])  
  5. {  
  6.    QApplication app(argc,argv);  
  7.    QLabel hello(QObject::tr("你好").toLocal8Bit());  
  8.    QTextCodec *codec = QTextCodec::codecForLocale();  
  9.    QString a = codec->toUnicode("安師大手動");  
  10.    hello.setWindowTitle(a);  
  11. hello.show();  
  12. return app.exec();  

小結:對于Qt中文顯示問題解決,本篇文章介紹完了,這篇文章應該對你很有用!希望能幫到你吧!

【編輯推薦】

淺談Qt中多線程編程

淺析Qt VC中常用插件

深度解析 QT 編譯安裝方法

Qt 平臺中使GUI保持響應流暢

QT中關于信號與槽機制的實現原理

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-03-18 18:47:34

QtMySQL

2009-07-17 14:33:05

Jython中文問題

2009-06-09 15:51:07

Java ee中文問題解決方法

2009-02-18 14:28:23

編碼亂碼JSP

2009-08-14 13:49:58

Rails中文問題

2009-06-19 11:16:14

java web中文亂碼

2011-04-29 10:18:34

投影機

2011-06-27 16:44:59

Qmake

2010-04-28 18:01:15

Unix系統

2010-06-17 11:35:24

Ubuntu 修復Gr

2011-06-14 13:41:27

muleWSDL

2009-07-23 16:53:17

ASP.NET中文變問

2010-06-09 16:33:46

Cacti中文

2010-05-05 10:25:24

Unix操作系統

2011-11-28 22:45:19

Nginxsession

2009-12-28 10:56:45

WPF Image

2010-05-05 14:20:46

AIX CDE

2012-05-09 10:08:41

跨機房

2011-01-21 14:13:10

2009-06-30 14:02:00

Struts亂碼Eclipse
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品一区二区三区蜜桃久 | 色偷偷888欧美精品久久久 | 中文字幕不卡在线观看 | 国产欧美一级二级三级在线视频 | 国产区精品视频 | 91高清视频在线观看 | 99久久国产精 | 国产精品揄拍一区二区久久国内亚洲精 | 岛国av在线免费观看 | 91精品国产综合久久精品图片 | 日韩欧美在线一区 | 草草草久久久 | 亚洲一区毛片 | 91在线电影| 亚洲成人国产精品 | 午夜精品一区二区三区三上悠亚 | 四虎永久影院 | 最新中文字幕在线播放 | 又爽又黄axxx片免费观看 | 成人久久久久 | 又黑又粗又长的欧美一区 | 国产一区二区在线免费 | 一区中文字幕 | 天天看天天干 | 中日字幕大片在线播放 | 99亚洲精品| 日本超碰| 日韩视频精品在线 | 日韩第1页| 国产精品久久久久久久久久久免费看 | 综合成人在线 | 一区二区三区免费 | 日韩欧美国产综合 | 激情欧美一区二区三区中文字幕 | 久久久久国产 | 黄色成人在线观看 | 亚洲视频免费在线观看 | 青青草网站在线观看 | 亚洲综合久久精品 | 亚洲国产小视频 | 欧美日韩一 |