使QScrollArea的背景透明,而且不影响子控件

使QScrollArea的背景透明,乍看很easy,其实倒是一个目前百度上百不出来的问题;spa

最容易想到的,用qss:get

scrollArea->setStyleSheet("background-color:transparent;");源码

可是这样会使scrollArea所包含的全部子控件的背景也变成透明,大大不妥啊。。。百度

 

而后:scroll

scrollArea->setStyleSheet("QScrollArea {background-color:transparent;}")viewport

这个竟然无效,大跌眼镜。。。view

 

而后百度,有人问,没人答,再谷歌,靠,被墙了。。。vi

那么,看QT源码吧,找到QScrollArea他爹QAbstractScrollArea。。。co

有发现,QWidget *viewport()。。。就是这个挡路的子控件惹的事了,background

挡路的家伙,须要修理。。。这个是public的,再对这个设置一下qss就好了

因此,最后的解决办法是2步,按顺序来:

1:scrollArea->setStyleSheet("QScrollArea {background-color:transparent;}")

2:scrollArea->viewport()->setStyleSheet("background-color:transparent;");

 好了,全透了,清爽了。

相关文章
相关标签/搜索