• 11616阅读
  • 4回复

请教:如何使QScrollArea的背景透明,并且不影响子控件? [复制链接]

上一主题 下一主题
离线guoguiyang
 

只看楼主 倒序阅读 楼主  发表于: 2013-01-18
我用的Qt Creator,Qt版本是4.8.1,操作系统环境是Ubuntu 10.04。会使用QSS编写样式表,懂得QSS基本语法。
目前在编写一个软件界面,为了方便,所有QSS样式均写在独立的QSS文件中。

现在开发一个的软件界面,需要用到QScrollArea。为了美观,需要将它显示内容的区域背景色变成为透明。

我知道使用样式表background-color:transparent 可以使控件背景透明:
  1. scrollArea->setStyleSheet(QString::fromUtf8("background-color:transparent;"));

也知道像上面一样的这样设置会使,scrollArea所包含的所有子控件的背景也变成透明。

但百思不得其解的是:

(1)直接在程序里调用QScrollArea的setStyleSheet()设置ScrollArea的样式表会有效果,但在我的QSS文件里这样写就没效果。
  1. QScrollArea#scrollArea { background-color:transparent; }

      是不是Qt不支持ScrollArea的QSS语法?

(2)如何设置QScrollArea,让它只有内容区域的background是透明的,它的子控件包括滚动条的background不受影响


离线reboot
只看该作者 1楼 发表于: 2013-01-20
我也遇到同一个问题,楼主解决了吗?
离线guoguiyang

只看该作者 2楼 发表于: 2013-01-22
目前暂时还没找到方法。
已经考虑用QAbstractScollArea创建自定义类了。
离线miloc

只看该作者 3楼 发表于: 2013-01-23
qss 肯定是支持的 不知道你在细节上怎么搞的
离线reboot
只看该作者 4楼 发表于: 2013-01-23
我试了一下,qss里设置
QWidget#sourceEditWidget,#sourceScrollArea,#scrollAreaWidgetContents{
    background-color:transparent;
}
是可以用的
快速回复
限100 字节
 
上一个 下一个