Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3691|回复: 4
打印 上一主题 下一主题

QT控件 QTextEdit 中文显示乱码

[复制链接]

388

主题

602

帖子

2218

积分

金牌会员

Rank: 6Rank: 6

积分
2218
跳转到指定楼层
楼主
发表于 2016-6-28 16:12:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
QT5中文这么用(QStringLiteral("中文");
QT4中文这么用tr("中文");



回复

使用道具 举报

388

主题

602

帖子

2218

积分

金牌会员

Rank: 6Rank: 6

积分
2218
沙发
 楼主| 发表于 2016-6-28 16:13:06 | 只看该作者
QTextCodec *gbk = QTextCodec::codecForName("GBK");main函数得有这句话
回复 支持 反对

使用道具 举报

388

主题

602

帖子

2218

积分

金牌会员

Rank: 6Rank: 6

积分
2218
板凳
 楼主| 发表于 2016-6-28 16:13:47 | 只看该作者
QTextCodec* pCodec = QTextCodec::codecForName("UTF-8");
    QString strResult = pCodec->toUnicode(resultContent);
回复 支持 反对

使用道具 举报

388

主题

602

帖子

2218

积分

金牌会员

Rank: 6Rank: 6

积分
2218
地板
 楼主| 发表于 2016-6-28 16:14:06 | 只看该作者
由于从文件中提取出来的数据为QByteArray类型的,而lineEdit需要的是QString类型的
myLineEdit->setText(QString::fromLocal8Bit(dataFromFile.mid(idx, len).data()));
回复 支持 反对

使用道具 举报

1272

主题

2067

帖子

7962

积分

认证用户组

Rank: 5Rank: 5

积分
7962
5#
发表于 2020-2-21 12:51:49 | 只看该作者
Qt4中使用如下方法:
  1. QTextCodec *codec = QTextCodec::codecForName("gbk");
  2. QTextCodec::setCodecForLocale(codec);
  3. QTextCodec::setCodecForCStrings(codec);
  4. QTextCodec::setCodecForTr(codec);
复制代码
但是在Qt5中该函数已经被KO了.
1.最直接最有效的方法:
  在Qt的安装路径找到bin同级目录的include文件夹,在其下找到qglobal.h头文件,在其中加入以下代码:
  1. #if _MSC_VER >= 1600
  2. #pragma execution_character_set("utf-8")
  3. #endif
复制代码
这样就可以解决所有中文显示乱码问题。注意文件也要保存为utf-8!!
2. 直接使用函数QStringLiteral("我是中文");也可以解中文乱码问题,但是个人认为还是很麻烦。
  以上方法均在QtCreator中试验成功。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-26 04:09 , Processed in 0.061848 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表