九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
QT中中文顯示問(wèn)題

一、環(huán)境:

1、RedHat 10

2、QT4.5.0

3、linux 2.6.30

二、程序:

...

QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));

...

label.setText(QObject::tr("同一個(gè)世界,同一個(gè)夢(mèng)想!"));

...

結(jié)果:

標(biāo)題顯示正常,標(biāo)簽和按鈕的中文都是亂碼。

常用方法總結(jié)如些

1、使用setDefaultCodec進(jìn)行設(shè)置;

  qApp->setDefaultCodec(QTextCodec::codecForName("GBK") );

  QLabel *label = new QLabel( tr("中文標(biāo)簽") );

 可惜setDefaultCodec是QT3的函數(shù),QT4已經(jīng)不支持了。

2、 設(shè)置QObject的成員函數(shù)tr()的編碼;

 QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));

3、使用QString的fromLocal8Bit()函數(shù);

   QString str;

  str = str.fromLocal8Bit("哈哈哈");

  hello.setWindowTitle(str);

4、用QTextCodec的toUnicode方法來(lái)顯示中文

   QLabelhello(QObject::tr("你好").toLocal8Bit());

   QTextCodec*codec = QTextCodec::codecForLocale();

   QString a =codec->toUnicode("安師大手動(dòng)");

5...

 QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));

  QFontfont("Times",12,QFont::Normal,FALSE);

  app.setFont(font);

  ...

 label.setText(QObject::tr("同一個(gè)世界,同一個(gè)夢(mèng)想!"));

  ...

6、QTextCodec::codecForName(“GBK”)將返回NULL指針。

   QTextCodec * BianMa =QTextCodec::codecForLocale();  //QTextCodec::codecForName ( "GBK" );

7、

  在QT中可以直接QTextCodec來(lái)轉(zhuǎn)換字符串的編碼,這為在QT下開(kāi)發(fā)中文軟件帶來(lái)了便利條件,不過(guò)這種方 法不符合國(guó)際化/本地化的標(biāo)準(zhǔn):
CODE:
   char *string = "你好,世界!";
   QTextCodec *codec =QTextCodec::codecForName("GBK");
  //QTextCodec *codec =QTextCodec::codecForName("Big5");
  QString strText =codec->toUnicode(string);
  QLabel *label = new QLabel(strText);

最直接的方法是把整個(gè)應(yīng)用程序的編碼設(shè)置為GBK編碼,然后在字符串這前加tr:
CODE:
qApp->setDefaultCodec(QTextCodec::codecForName("GBK") );
...
QLabel *label = new QLabel(tr("你好,世界!"));

例:
CODE:
#include
#include
#include<qtextcodec.h>                       //文件頭

int main( int argc, char *argv[] )
{
QApplication app( argc, argv );
app.setDefaultCodec( QTextCodec::codecForName("GBK") );
QLabel label(tr("你好,世界!"), NULL);
app.setMainWidget(&label);
label.show();
return app.exec();
}

如果使QT根據(jù)Locale的環(huán)境變量取得字符集,可以使用如下命令:
QString::fromLocal8Bit("你好,世界!");
例:
CODE:
#include
#include

int main( int argc, char *argv[] )
{
QApplication app( argc, argv );
QLabel label(QString::fromLocal8Bit("你好,世界!"), NULL);
app.setMainWidget(&label);
label.show();
return app.exec();
}
-------------------------------------------------------------------------------------------

法二:

QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
-----------------------------------------------------------------------------------------
法三:可以寫(xiě)個(gè)函數(shù)
QString   init_gbk(QStrings)
{
QGbkCodec* gbk=(QGbkCodec*)QTextCodec::codecForName("GBK");
return gbk->toUnicode(s.latin1(),s.length());
}
調(diào)用下就好

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Qt中文顯示
嵌入式Qt支持ttf字庫(kù),并顯示中文
QT下中文字符編碼的轉(zhuǎn)換
如何將QString轉(zhuǎn)換為char *或者相反
QT操作數(shù)據(jù)庫(kù) 學(xué)習(xí)基礎(chǔ)
QT文本編碼轉(zhuǎn)換方法
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服