首页 > 代码库 > 使QScrollArea的背景透明,并且不影响子控件
使QScrollArea的背景透明,并且不影响子控件
使QScrollArea的背景透明,乍看很easy,其实却是一个目前百度上百不出来的问题;
最容易想到的,用qss:
scrollArea->setStyleSheet("background-color:transparent;");
但是这样会使scrollArea所包含的所有子控件的背景也变成透明,大大不妥啊。。。
然后:
scrollArea->setStyleSheet("QScrollArea {background-color:transparent;}")
这个居然无效,大跌眼镜。。。
然后百度,有人问,没人答,再谷歌,靠,被墙了。。。
那么,看QT源码吧,找到QScrollArea他爹QAbstractScrollArea。。。
有发现,QWidget *viewport()。。。就是这个挡路的子控件惹的事了,
挡路的家伙,需要修理。。。这个是public的,再对这个设置一下qss就行了
所以,最后的解决办法是2步,按顺序来:
1:scrollArea->setStyleSheet("QScrollArea {background-color:transparent;}")
2:scrollArea->viewport()->setStyleSheet("background-color:transparent;");
好了,全透了,清爽了。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。