我在做项目的时候,发现基于qwidget的窗口给它设背景,发现没有生效,反倒是作用到了上面的控件去了,比如按钮。网上查资料看到了如下 的方法,
If you subclass from QWidget, you need to provide a paintEvent for your custom QWidget as below: void CustomWidget::paintEvent(QPaintEvent *) { QStyleOption opt; opt.init(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); }
也就是说要给你这个基于qwidget的窗口来一个,paintevent,原因比较简单,QWidget的paintEvent()是空的,而样式表要通过paint被绘制到窗口中。