• 5854阅读
  • 3回复

[提问]一个比较奇怪的QT中显示中文的问题 [复制链接]

上一主题 下一主题
离线hgxywhu
 
只看楼主 倒序阅读 楼主  发表于: 2007-01-06
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
环境:Fedcore 4.0,5.0;QT4.2.2
#include <QApplication>
#include <QPushButton>
#include <QtGui>
int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));
  QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
  QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB18030"));
 
  QPushButton* b1 = new QPushButton("b1");
  QTextCodec* codec = QTextCodec::codecForName("gb2312");
  b1->setText(QObject::tr("b中\x41文b"));

  b1->resize(100, 30);
  b1->setWindowTitle("b中文b");
  b1->show();

  return app.exec();
}
在以上的程序中,标题头是中文的但按钮只能显示字母,我将GB18030改为UTF-8和GB2312都不行
又将操作系统的语言改为英文和繁体中文也不行,
根据现象来看标题头是操作系统在管理所以可以显示中文,尔按钮则是QT在管理故显示不出。
但我的QT是啥地方出问题了?还请各位大侠多多指教
[ 此贴被XChinux在2007-01-07 17:03重新编辑 ]
离线litice

只看该作者 1楼 发表于: 2007-01-11
QApplication app(argc, argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB18030"));

QPushButton * b1 = new QPushButton("b1");
QTextCodec * codec = QTextCodec::codecForName("gb2312");
QString string = codec->toUnicode("b中\x41文b");
b1->setText(string);
如果用tr的话就:
QApplication app(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB18030"));

QPushButton * b1 = new QPushButton("b1");
b1->setText(QObject::tr("b中\x41文b"));

b1->resize(100, 30);
b1->setWindowTitle("b中文b");
或者:
QApplication app(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));

QPushButton * b1 = new QPushButton("b1");
b1->setText(QObject::tr("b中\x41文b"));

b1->resize(100, 30);
b1->setWindowTitle(QObject::tr("b中文b"));
好好看一下 QTextCodec 这个类
离线weihua
只看该作者 2楼 发表于: 2007-01-13
不建议在代码中直接使用中文,这样破坏了Qt支持多种自然语言的特性.
离线lab_zj

只看该作者 3楼 发表于: 2007-03-19
不用那么麻烦:
直接调用 QPushButton *b1=new QPushButton(QString::fromLocal8Bit("中文按钮"));
快速回复
限100 字节
 
上一个 下一个