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对不上号也不报错,这到底是优点还是缺点呢?我感觉是方便了初级开发者,复杂了对运行时的深度控制判断。
QSS的作用需要正确设置文件编码才能起作用的更多相关文章
- jsp_设置文件编码
jsp有两种方法可以设置文件编码: (1)<%@page language="java" contentType="text/html;charset=utf-8& ...
- Eclipse中设置文件编码
如果你在使用某个editor进行开发的话,文件编码就由改editor解决即可 Eclipse中也有这个功能,帮你设置文件的编码,选择Edit->Set Encoding即可 注意,这个选项针对不 ...
- JSP设置文件编码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Myeclipse设置文件编码
设置选项分析: 1.window-->preferences-->General-->workspace-->Text file encoding 这里设置全局默认的文件编码格 ...
- tomcat设置文件编码
tomcat修改bin文件夹下面的catalina.bat文件可以解决乱码在文件中加上JAVA_OPTS="-server -Xms128M -Xmx4096M -XX:PermSize=5 ...
- pycharm 设置文件编码的位置:Editor-->File Encodings
打开设置-->Editor-->File Encodings
- css设置文件编码
在外部css文件的顶部,写入下面代码: @charset "UTF-8";
- pycharm设置文件编码
原文链接
- php设置文件编码
<?php @header('Content-type: text/html;charset=UTF-8'); ?>
随机推荐
- Session原理简述
Session存在的意义,估计每个用做web开发的人都是了解的,就为了解决HTTP是个无状态协议所带来的问题,不多说了.这里主要想说的是服务端与客户端是如何利用session进行交互的. Sessio ...
- String与StringBuffer对象问题
下面的代码创建了三个String对象,其中pool中一个,heap中两个 String s1 = new String("abc"); String s2 = new String ...
- 如何取消FLEX里模态窗口的毛玻璃效果
在Flex里面,比如使用PopUpManager.createPopUp(this,TipWindow,false)第三个参数设成true 会出现毛玻璃效果让CPU飙升,可不可以改变模态窗口的效果,不 ...
- platform
作者yuanlulu httpblogcsdnnetyuanlulu版权没有但是转载请保留此段声明 第1章platform驱动管理机制 platform_device 数据结构 注册流程 platfo ...
- 【jquery】javaScript中prototype的妙用 巧妙运用prototype属性原型链创建对象
prototype 可以有好多有优化实现方法 http://blog.csdn.net/liuqiwen0512/article/details/8089690 在 JavaScript 中,每个函 ...
- 【Go】http server 性能测试
node秒java几街!pathon秒node几街 !go秒pathon几街! ab测试性能极佳的 package main import ( "fmt" "html/t ...
- JS类库函数收集中....
实现string的substring方法 方法一:用charAt取出截取部分 String.prototype.mysubstring=function(beginIndex,endIndex){ v ...
- 关于php框架
最近学习yii2.0 强哥原班人马开发,不得不看 同时也需要关注一下drupal8和symfony2
- html onclick 传参数
<a id="j-im" class="jd-im btn-gray gys-im" href="javascript:(0);" o ...
- oracle中事务处理
事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败. 事务和锁 当执行事务操作时(dml语句),oracle会在被作用的表上加锁,防止其它用户改表的结构 ...