您的位置:首页 > 编程语言 > Qt开发

qt5版本的中文显示问题

2017-07-10 14:03 211 查看
作者使用的qt版本为当前最新的5.9.1。

网上有许多相关问题的解答,但大多数并未区别qt4与qt5。

网上的解决方法:

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF8"));

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF8"));

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));

以上方法仅适用于qt4版本,在qt5版本更新后,setCodecForTr和setCodecForCStrings两个函数已经被删除,编译时会报错。

qt5版本中正确解决中文乱码的方法如下:

1对话框类型的中文乱码解决方法如下:

QTextCodec * BianMa = QTextCodec::codecForName ( "GBK" );

//QMessageBox::information(this, "提示", BianMa->toUnicode("中文显示!"));

if(a.isEmpty()){

QMessageBox::information(this,BianMa->toUnicode("请输入用户名"),BianMa->toUnicode("用户名不能为空"),QMessageBox::Ok);

}

if(b.isEmpty()){

QMessageBox::information(this,BianMa->toUnicode("请输入密码"),BianMa->toUnicode("密码不能为空"),QMessageBox::Ok);

}

if(c.isEmpty()){

QMessageBox::information(this,BianMa->toUnicode("请输入服务器地址"),BianMa->toUnicode("服务器地址不能为空"),QMessageBox::Ok);

}

if(d.isEmpty()){

QMessageBox::information(this,BianMa->toUnicode("请输入端口号"),BianMa->toUnicode("端口号不能为空"),QMessageBox::Ok);

}

2非对话框类型的中文乱码解决方法如下:

userName_label = new QLabel(QString::fromLocal8Bit("用户名:"),this);

passWord_label = new QLabel(QStringLiteral("密码:"),this);

以上为两种解决方法,第一种适用于常量和变量,第二种仅适用于常量。

以上为qt5.9中解决中文乱码的解决方法,欢迎大佬发表自己的看法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt5 中文乱码