在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等。
但是各种方法都有其注意事项,如果不注意则很容易陷入麻烦中。
1:使用QPalette设置
如果给父窗口设置背景往往闪烁一下就不见了,一直没有生效,好像只能在子窗口中设置,但是子窗口中也必须setAutoFillBackground(true);,要不然也不生效;
所以目前想到的办法是:在父窗口创建的时候,新建一个Qlabel/QToolButton,resize,然后通过palette,来设置子窗口的背景图片。不知道大家遇到这种情况了?
styleSheet参考这个:
2:setStyleSheet()
这个函数我一直很喜欢使用,因为只要写一句就可以实现效果,比其他方法都简单,但是其却有一个很值得注意的地方,也就是这个地方让我大吃苦头。
亦即:①:该函数只能用于设置有父窗口的子窗口的背景!如果一个窗口没有子窗口,则无法使用该函数来设置背景颜色或图 片!!
②:同时:对于一个父窗口而言:如果我们用setStyleShette设置了其样式,而对于其子窗口:如果没有用同样的函数来设
置的话, 则其子窗口的样式和其父窗口完全一致,亦即:其集成了自己父窗口的样式!
③:延伸:对顶层窗口(没有父窗口),