QT unicode编码问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT unicode编码问题相关的知识,希望对你有一定的参考价值。

各位大侠,我用QT做了一个界面,我想从一个由unicode编码的TXT文件读入数据,但是读入得数据都是乱码,用QT怎么处理能使它不乱码,用ASCII编码的TXT文件就没有问题,请指教。。。

读取文件之后,使用tr()进行转换。

加上这句试试:
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());

可能需要包括#include<QTextCodec>
参考技术A 判断出文件的编码格式,设置QString的编码,按照编码来去字符串就没有问题了。 参考技术B 你需要加入qt字库这样就能识别了。

qt 编码的问题

在编译的时候出现了警告 warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
我用的是qt 5.3.2 上网找到了一些方法:
(1)转换Code文件为Unicode格式;(这种方法不懂啊 在哪里转换?我在工具>选项>文本编辑器>默认编码 中没有找到Unicode啊?)
(2)在Project -> Properties -> Configuration Properties -> C/C++ -> Advance 的 Disable Specific Warnings 中添加相应的警告编号:4819;(这个方法找不到啊 是不是5.3.2中project 中没有properties 啊 我怎么找不到)

(3)或找出不符合Unicode格式的文件,然后在该文件的开始处加入下面的语句:

# pragma warning (disable:4819) (这个方法没有用)

大家有其他方法么?

参考技术A 你说的是?在代码编辑页上出现黄色的警告? 如果是的话可以这样..

编辑--->选择编码--->选择 UTF-8追问

成功了 我还想问你个问题  因为我要做作业 现学qt不太懂 我想实现下面的机制

左边是几个按钮 右边是一个显示的区域我点击不同的按钮  对应的内容都显示在邮编的区域  有控件可以实现么?尽量用控件拖拽的方法吧 因为我还是不太会写qt的代码 谢谢!

追答

其实你这样,还不如使用 Tab Widget 或者 Stacked Widget..

不然你就画三个框框... 点击每个按钮的时候信号绑定一下button click()hide() or show()的方法 ..
点"查看" ,显示地一个框框,其他三个隐藏.

qt5 貌似用QML更开心~~

追问

我用的是setVisible(false) 这个hide 有什么区别啊?
我用了Gird Layout 能不能整体隐藏或者不可见啊?
现在出现的问题是 两个层叠在一起 其中一个层显示的时候上面的linetext不能用就是光标不能显示

追答

hide() 的帮助文档里面写,
This convenience function is equivalent to calling setVisible(false).
这个函数等同于调用setVisible(false)..所以没差..
Gird Layout 你要整体隐藏就在他外面加上Widget, 隐藏Widget就好了啊..
最近学QML比较多.. QT就是随便看看..你试试可以不

本回答被提问者和网友采纳

以上是关于QT unicode编码问题的主要内容,如果未能解决你的问题,请参考以下文章

qt 编码的问题

QT的字符编码

Qt读取ANSI格式文件——利用QTextCodec将其他编码格式的QByteArray转换为Unicode格式,或者从文件中读出后直接做转换

如何实现 qt 中qfile写出的文本 设置为unicode编码 在线等 谢谢。。。

Qt界面显示乱码问题

java 自动处理unicode编码