qt 编码的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 编码问题

windows默认的编码是GBK,linux默认的编码是UTF8
我在windows环境下使用Qt编程的时候,只有使用GBK才不会乱码,请问我怎么设置才能在windows下使用utf运行处汉字。
我用GBK的代码如下:

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
qDebug()<<"不怕神一样的对手,就怕猪一样的队友";
我想吧GBK换成UTF-8,换了就会乱码

设置Qt的编码是在这吗?我说的是Qt Creator
Tools->Options->Environment->General->Default file encoding. 是这吗?如果不是,再哪设置,我设置这个没发现它有什么作用
没有人知道吗?

windows下默认是GBK的编码格式,如果想使用UTF8就要先修改Qt Creator的编码格式,方法如下
Tools->Options->Environment->General->Default file encoding
修改好UTF8格式之后,再创建工程,就可以显示UTF8格式的汉字了

代码如下:

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF8"));
qDebug()<<"不怕神一样的对手,就怕猪一样的队友";

或者使用这样输出

QTextCodec* codec = QTextCodec::codecForName("UTF8")
QString str = codec->toUnicode("不怕神一样的对手,就怕猪一样的队友");
qDebug()<<str;
参考技术A 你在windows下文件格式保存为utf-8,这样就没有问题了。
因为在默认情况下,linux下的utf8文本是没有包含utf8文件头信息的,所以会导致windows下处理有不兼容

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

QT unicode编码问题

Qt 5 编码问题

VS2013 Qt5 Mysql中文编码问题

qt中文编码(好多方法)

qt中编码格式问题

Qt与FFmpeg联合开发指南——编码:代码流程演示