由于业务需求,需要继承QWidget写一个目标类,但是遇到一个问题就是,继承完成之后,子类的样式表不生效

重写的子类的名字是class DeviceFrequencyCounter

;

同时给这个类添加样式表

Qt 继承QWidget之后,子类样式表不生效_样式表

 

 

 可以看到在UI Designer中,样式表已经生效了,但是,在主进程中创建这个DeviceFrequencyCounter *freqCounter对象之后,样式表却又失效了

Qt 继承QWidget之后,子类样式表不生效_.net_02

 

 

 运行之后的主进程窗口显示如下

Qt 继承QWidget之后,子类样式表不生效_.net_03

 

 

 明明在UI designer中已经生效的样式表,为什么在创建了实例对象之后,又无效了呢?

被这个问题困扰了好久之后,终于得知是paintEvent没有重写的原因

在继承QWidget之后,需要对paintEvent函数重新实现,否则样式表不会生效。

因此需要在DeviceFrequencyCounter的源文件中添加如下代码

Qt 继承QWidget之后,子类样式表不生效_样式表_04

 

 

 之后,再重新运行程序Qt 继承QWidget之后,子类样式表不生效_源文件_05

 Qt 继承QWidget之后,子类样式表不生效_重新运行_06

 

 可以看到这时候,样式表正常生效了