• 3672阅读
  • 2回复

[原创]用qss样式表给QWidgetQWidge直接派生的窗口添加背景图片 [复制链接]

上一主题 下一主题
离线tao_jh00
 

只看楼主 倒序阅读 楼主  发表于: 2014-04-10

从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();
}
离线pain22

只看该作者 1楼 发表于: 2014-04-10
离线dbzhang800

只看该作者 2楼 发表于: 2014-04-11
恩,Qt 自带的文档Qt Style Sheets Reference中,其实说的很明白了。
快速回复
限100 字节
 
上一个 下一个