Hi Loden,

The source code you provided if not cross-platform even under Qt4.

Under Windows platform, source file is save using encoding "GBK" while
under linux platform it saved as "UTF-8"

which means you are using two sets of source code for two platforms.

In addition, these are two errors(mistakes) in your source code.

 1.  Q_WS_WIN should be changed to Q_OS_WIN even you are using Qt4

 2.  You should not call setCodecForLocale() in such cases, no mater
you are using Qt4 or Qt5.

Debao

2012/4/22 Loaden <loa...@gmail.com>:
> After test, I can sure this code can works well on Windows 32bit + MSVC2010
> or Linux 64bit + GCC4.6.2 with Qt4.
> But can't work with Qt5.
> Please give me a sulution about this case.
>>
>>
>> #include <QApplication>
>> #include <QLabel>
>> #include <QTextCodec>
>> #include <QTextStream>
>> #include <QDebug>
>>
>> int main(int argc, char *argv[])
>> {
>> #ifdef Q_WS_WIN
>>
>>
>>     QTextCodec *codec = QTextCodec::codecForName("GBK");
>> #else
>>     QTextCodec *codec = QTextCodec::codecForName("UTF-8");
>> #endif
>>
>>     QTextCodec::setCodecForLocale(codec);
>> #if QT_VERSION < 0x050000
>>     QTextCodec::setCodecForCStrings(codec);
>>     QTextCodec::setCodecForTr(codec);
>> #endif
>>     QApplication app(argc, argv);
>>     QString str = "Hello世界World!你好!";
>>     QTextStream out(stdout);
>>     qDebug() << "Hello世界World!你好!";
>>     out << str << endl;
>>     QLabel *label = new QLabel(str + QObject::tr("Hello世界World!你好!"));
>>     label->show();
>>     return app.exec();
>> }
>
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to