在VS中开发Qt5程序似乎成了我的一种习惯,因为觉得VS简直不能再溜了,不愧是“宇宙第一IDE”。

所以在开发中难免会遇到中文显示乱码的问题,网上找到的很多方法都是类似于下面这样的:

QStringLiteral("中文")

或者这样的:

#pragma execution_character_set("utf-8")

还有这样的:

QTextCodec * BianMa = QTextCodec::codecForName ( "GBK" ); 
QMessageBox::information(this, "提示", BianMa->toUnicode("中文显示!"));

还有这样的:

QString::fromWCharArray(L"中文字符");

反正,我一般是这样的:

QString::fromlocal8Bit("汉字");

这么多方法里面,如果是在VS中开发,那就用下面这两种:

QString::fromWCharArray(L"中文字符");
QString::fromlocal8Bit("汉字");

如果,很要命的想在VS和Qt creator中同时开发,那就用:

QString::fromlocal8Bit("汉字");

然后,还涉及到string转QString,就是

QString::fromStdString(s);

但是,如果你要QString转std::string的话,那可以直接用它:

QString::fromStdString(string);

但是,有时候很要命,会有汉字,所以就用它会比较保险:

//std::string to QString
QString::fromlocal8Bit(string.data())

//QString to std::string
QString str = "中文";
str.toLocal8Bit().data()

QString还提供了特别好用的数字与字符互转:

QString::number(数字);

QString str ="2";
str.toInt();//其他类型类似

辛苦最怜天上月,一昔如环,昔昔都成玦。

若似月轮终皎洁,不辞冰雪为卿热。

无那尘缘容易绝燕子依然软踏帘钩说。

唱罢秋坟愁未歇春丛认取双栖蝶。

  -- 纳兰性德 《蝶恋花·辛苦最怜天上月》