从QWidge直接派生的一个窗口,使用stylesheet设置背景,在designer中可以看到效果,编译运行后,没有背景。原因是QWidget直接派生类的样式表不起作用。需要先重写一下QWidget的paintEvent()事件,再使用样式表,因为QWidget的paintEvent()是空的,而样式表要通过paint被绘制到窗口中。
void myWidget::paintEvent(QPaintEvent *) { QStyleOption opt; opt.init(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); }
qss样式表:
QWidget#mywidget
{
border-image: url(E:/QtProjects/build/JJLX/UI/back.jpg);
}
QWidget#mywidget * //让所有子窗口不使用父窗口的背景图片
{
border-image: url();
}