• 4605阅读
  • 8回复

qt [复制链接]

上一主题 下一主题
离线cutelearner
 
只看楼主 倒序阅读 楼主  发表于: 2010-04-23
qt和eclipse安装在windows上,用eclispe开发qt应用程序。
程序源代码如下:

#include <QtGui>
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
QTextCodec *codec = QTextCodec::codecForName("UTF8");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QApplication a(argc, argv);
HelloWorldQt w;
QWidget * pWidget=new QWidget;
QLabel label(pWidget);
char *string = "中文和English混和字符串!";
label.setText(codec->toUnicode(string));
pWidget->show();
return a.exec();
}

红字部分改成GBK或GB2312程序运行就出错,windows提示信息如下:
问题事件名称: APPCRASH
应用程序名: HelloWorldQt.exe
应用程序版本: 0.0.0.0
应用程序时间戳: 4bd14bd0
故障模块名称: QtCored4.dll
故障模块版本: 4.3.2.0
故障模块时间戳: 4bd03d45
异常代码: c0000005
异常偏移: 00136a5f
OS 版本: 6.1.7600.2.0.0.256.1
区域设置 ID: 2052
其他信息 1: 0a9e
其他信息 2: 0a9e372d3b4ad19135b953a78882e789
其他信息 3: 0a9e
其他信息 4: 0a9e372d3b4ad19135b953a78882e789

请问是什么原因,如何解决?
离线cnhome
只看该作者 1楼 发表于: 2010-04-23
好像一本都是用tr

    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
离线cutelearner
只看该作者 2楼 发表于: 2010-04-23
引用第1楼cnhome于2010-04-23 16:11发表的  :
好像一本都是用tr
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));


你没有看清楚问题。请你再仔细看看。
离线cnhome
只看该作者 3楼 发表于: 2010-04-23
GB18030看看呢?!
离线cnhome
只看该作者 4楼 发表于: 2010-04-23
windows下哪有UTF-8啊

  QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB18030"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));

我的QT是 4.6.2
离线cutelearner
只看该作者 5楼 发表于: 2010-04-23
#include <QtGui>

int main(int argc, char *argv[])
{
    QTextCodec *codec = QTextCodec::codecForName("GB18030");
    QTextCodec::setCodecForTr(codec);
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);
    QApplication a(argc, argv);
    QWidget * pWidget=new QWidget;
    QLabel label(pWidget);
    label.setText(QObject::tr("中文"));
    pWidget->show();
    return a.exec();
}

程序这样写出来的是乱码。
离线cnhome
只看该作者 6楼 发表于: 2010-04-23
我这里很正常,你用的什么版本
离线cutelearner
只看该作者 7楼 发表于: 2010-04-23
Qt 4.3.2
Eclipse Version: 1.2.2.20100209-1511 Build id: 20100218-1602
Qt Eclipse Integration v1.6.1
离线yangfanxing
只看该作者 8楼 发表于: 2010-04-23
label.setText(codec->toUnicode("中文"));
PHPWind好恶心。。。不想看这种界面。。。
快速回复
限100 字节
 
上一个 下一个