最近在写qt加载样式表的博文,发现qss文件要么打开失败,要么加载成功,但是不生效,经过一番搜索也是算解决了这个问题。
- 读取qss失败:
读取文件的方式有两种,一种是绝对路径,一种是相对路径:
//绝对路径
C:\\Users\\fdog\\Desktop\\sheet.qss
//相对路径
./lib/sheet.qss
出现错误大多数就在相对路径,容易把.写成:这里要注意一下。
- qss不生效:
qss文件读取成功,但是样式表不生效,用qDebug()输出的qss的字符,在开头有几个问号,而正好你又是通过windows下记事本创建的qss文件,那么不生效的本质问题就是BOM(自行百度),BOM只有在windows下采用“记事本”存储为UTF-8时才会有,所以根本原因就是这个,开发期间用记事本编辑过代码文件。所以第一件事就是你需要下载一个NotePad++或者高级一点的编辑器,在保存文件是将BOM去掉。打开NotePad++,右下角会显示当前的utf-8带不带bom,若带,点击编码,选中使用utf-8编码,而不是utf-8 bom 编码。
现在的qss文件对于qt还是不能够正常生效,我们需要在qt里面设置如下:
将utf-8 bom由原先的是utf-8就添加改为目前存在了则保留。至此qss样式表加载完成。