问题背景

想让控件setText显示的中文不要乱码,结果就是个乱码。

问题解决方案

看了之前有一个大佬写的文章,结果发现,加上这四行代码

	QTextCodec *codec = QTextCodec::codecForName("UTF-8");
	QTextCodec::setCodecForTr(codec);
	QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
	QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());

例如

#include "testxml.h"

#include <QTextCodec>
using namespace std;
testXml::testXml(QWidget *parent, Qt::WFlags flags)
	: QWidget(parent, flags)
{
	ui.setupUi(this);
//目标很简单,将你好,显示在lineEdit
	QTextCodec *codec = QTextCodec::codecForName("UTF-8");
	QTextCodec::setCodecForTr(codec);
	QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
	QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
	QString name = "你好";
	ui.lineEdit->setText(name);


}

如果是qt5以上,那就需要另外一种方法,代码如下:

ui.lineEdit_3->setText(QStringLiteral("测试"));
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐