天天看点

QT样式表qss设置后无效的原因大全

设置样式表无非两种方式,1是直接在ui设计师界面填写,这样所见即所得,2是用代码setStylesheet。

不过令人困惑的是,经常设置了样式表之后,运行出的结果与预期不符,总结可能有以下原因:

1、子控件如果设置了样式表,那么他会把从父控件送来的【同选择器】下的样式表覆盖。

注:【样式表选择器】是专业术语,请自行搜索学习。

2、子类如果设置了样式表,那么从父类继承来的【同选择器】下的样式表覆盖。

注:子类和子控件不是一个概念。子控件是QWidget的树状关系。

3、子类化QWidget后的类,设置样式表无效。

官方手册已经特别指出了这个问题,解决方案是,在QWidget的子类中覆盖painterEvent函数

QT样式表qss设置后无效的原因大全

4、UI设计师界面设置过qss,而后又把编辑样式表的框删干净了。这不算完,因为属性列表会显示为粗体,这样qt会自动生成这种空样式表的代码: this->setStyleSheet(""); 要想真正删除,必须点击还原按钮。

这一点相当隐蔽,需要特别检察。

QT样式表qss设置后无效的原因大全

5、用代码设置的qss会覆盖在ui设计师界面填写的【同选择器】下的qss。因为我们常把自己的代码,在构造函数中,放到qt自动生成的 ui->setupUi(this); 后面。如果你调换了顺序,那就是代码设置的qss无效,而ui设计师设置的有效。

继续阅读