欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Qt5中文乱码

程序员文章站 2022-05-30 22:34:53
...
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);
  • 若出现:不允许指针指向不完整的类型,则是因为没有引用对应的头文件