在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等。 

父窗口用setStyleSheet()设置后子窗口一定会受到影响

Qt样式表设置背景对子控件产生影响的解决方法

如上图所示,对父窗口设置样式表后,子控件QPushButton也受到了影响

为了消除这个影响,样式表采用如下格式:

 #对象名{ 

border-image: url(:/Main_GUI/Main_GUI_bckgd.png);
}
#对象名* { 
border-image: url();
}
Qt样式表设置背景对子控件产生影响的解决方法

如上图所示,此时子控件没有受到样式表的影响。



补充:

样式表中的border-image是缩放填充,如下图:

Qt样式表设置背景对子控件产生影响的解决方法

background-image是原比例填充,空白地方会重复填充

Qt样式表设置背景对子控件产生影响的解决方法


相关文章: