QT修改qss文件后导致样式表不生效
来源:互联网 发布:数据恢复大师破解版 编辑:程序博客网 时间:2024/05/17 09:47
环境:Win7 64位 Qt5.5.1
问题描述:我的一个Qt工程原本样式表可以正常生效,但是在我改了qss样式表文件后,再重新构建工程运行,此时样式表就不生效了。撤销了样式表文件中我修改部分,重新构建运行还是不生效。
解决方法:
第一步:qss文件用文本打开,另存为/编码方式选择ANSI/保存。
第二步:Qt界面/工具/选项/文本编辑器/行为/UTF-8 BOM选择“总是删除”。
第三步:重新qmake/构建/运行程序,样式表就生效了。
总之qss功能需要正确设置编码才能起作用。
这是我在网上找了好久找到的两篇文章。http://www.vbgudu.com/html/20160628/53209.html和http://www.cnblogs.com/tjudzj/p/6193111.html?utm_source=itdadao&utm_medium=referral
为防止网址失效我就直接粘贴复制了
【qss功能需要正确设置编码才能起作用】
QT这个库,无非使用OO对跨平台做了绝佳的封装,这其中的主要工作也就是比较繁琐而已,但并不多么了不起。唯独其中提供的QSS功能,让我感到十分神奇,做出来的效果实在很惊艳,而使用代码却又是如此简单,而且是在长期以来中规中冷冰冰的C++编译器上提供这些功能,实在是刮过业界一个新风。也让我认识到,不是什么功能都是编译器提供的,编写库的人,在普通的编译器规则上,照样可以做出各种惊艳的效果来。
但是最近碰到一个问题,就是我的QSS设置效果在开发机上好好的,并且自己开的虚拟机上也是好好的,但是公司同事机上死活没有效果。这个问题疑惑了很久了,今天终于灵光一闪,解决了这个问题。原因还是出在QSS文件编码格式上。出于跨平台和多语言考虑,我把项目所有源文件都改成了UTF8+BOM格式,这个QSS文件也不例外(我的QSS文件里不含有中文字符)。读取QSS的代码在main函数里这样写:
QFile qss(":/qss/myfile");qss.open(QFile::ReadOnly); // qss 也要讲究是什么格式的文件读取qApp->setStyleSheet(qss.readAll()); qss.close();
我是在中文环境下开发的,于是它按照ANSI格式去读取QSS文件了,也不知道为什么就没问题。估计是文件头上的三个字节EF BB BF都被当作中文读出来了,然后试图去匹配QSS自带关键字,都对不上,然后就被忽略了,后面继续读取的话,那都是正确的。但是同一个文件同样的代码,到西文环境下,可能成功匹配几个字母,后面的却再也对不上号,于是就全部忽略了。这就是为什么我的程序QSS效果在同事机子上始终没有效果的原因。解决方案是把QSS文件转成为ANSI,或者不带BOM的UTF8格式,重新编译,然后效果就又重新出现啦。哦,原来这样啊,QSS文件就不能和ts语言文件一样做的更内置一点呢?
另外就是QT对它自己的错误控制的很好,不轻易报错,这里QSS读不出来、对不上号不报错,SIGNAL对SLOT对不上号也不报错,这到底是优点还是缺点呢?我感觉是方便了初级开发者,复杂了对运行时的深度控制判断。
- QT修改qss文件后导致样式表不生效
- Qt QSS样式表
- Jsp文件修改后不生效怎么办?
- QT QSS样式表心得
- Qt/Qss样式表基础
- Qt之样式表QSS
- WINDOWS HOST文件修改后不生效的处理方法
- 解决修改CSS文件后网页显示不生效问题
- Qt关于设置子窗口样式表不生效问题
- Qt样式表qss的使用
- Qt样式表qss的使用
- QT样式表Qss的应用
- Qt样式表QSS基本使用
- Qt之QSS样式
- redis修改requirepass后不生效
- QT突然发现设计处修改文件不生效?没关系。很简单
- 【Qt】自定义样式之QSS
- /etc/hosts文件修改后如何生效
- sed增加,删除,替换命令
- 仿新浪微博加#话题的EditText实现
- spingboot jpa String 映射mysql为 LongText类型
- 算法15:打印中两个整数范围内的所有素数,例如:(12, 15) ->13
- 操作手机联系人
- QT修改qss文件后导致样式表不生效
- 面试被虐系列_算法分析篇_二叉树
- zookeeper小例子
- The Process of Submitting a Job
- 反向传导算法
- JAVA中的null
- 微服务技能树
- java中的synchronized(同步代码块和同步方法的区别)
- 数据源