前言
QSS注释某一部分之后导致后面的控件设置的QSS失效
这大概率是你嵌套注释了,QSS同CSS一样是不允许嵌套注释的
原因
如下代码中QWidget#centralwidget
已经存在部分注释
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| QWidget{ border-radius: 15px; font-family:Microsoft Yahei,sans-serif; outline: none; } QWidget#centralwidget{ background-color: #c3f6ff; border-radius: 15px; } QMessageBox { background-color: rgb(67, 94, 134); }
|
如果我们像C++那样直接注释掉QWidget#centralwidget
全部QSS内容,变成如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| QWidget{ border-radius: 15px; font-family:Microsoft Yahei,sans-serif; outline: none; }
} */ QMessageBox { background-color: rgb(67, 94, 134); }
|
此时QWidget#centralwidget
的注释存在注释嵌套,/*
只会匹配后面遇到的第一个*/
.这样就会导致后面的}*/
没有注释,造成后续QSS内容解析异常,解析器只解析到了QWidget
的样式设置,后续的样式解析失败,导致失效。
要解决其实很简单,去掉要注释内容中除了最后的*/
即可.
可以这样修改,将不需要的*/
修改成* /
,即中间加个空格即可,如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| QWidget{ border-radius: 15px; font-family:Microsoft Yahei,sans-serif; outline: none; }
QMessageBox { background-color: rgb(67, 94, 134); }
|
这样注释就正常了,QSS解析也正常了。