Qt5中文乱码
2018-08-09 本文已影响5人
downdemo
QMenu* menu = menuBar->addMenu(tr("测试")); // 乱码
// 方案1:要求支持C++11
QMenu* menu = menuBar->addMenu(tr(u8"测试"));
// 方案2:不要求支持C++11
#include "qstring.h"
QMenu* menu = menuBar->addMenu(QString::fromLocal8Bit("测试"));
- 将有中文的std::string转QString打印
std::string s = "测试";
qDebug() << QString(QString::fromLocal8Bit(s.c_str()));
- 将有中文的QString转std::string
QString qstr = tr(u8"测试");
// QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
QByteArray cdata = qstr.toLocal8Bit();
std::string str = std::string(cdata);
// 或者直接
std::string str = qstr.toLocal8Bit();
- std::string与QString的互转
std::string str = qstr.toStdString();
QString qstr = QString::fromStdString(str);
- 若出现:不允许指针指向不完整的类型,则是因为没有引用对应的头文件