QScrollArea MacOS X上的透明背景

时间:2014-09-11 18:56:51

标签: c++ macos qt stylesheet

我在使QScrollArea的内容无法绘制背景时遇到问题。

所以这是最初的图片,当我没有应用样式表时: enter image description here 你可以看到,滚动区域的内容比整个框架更暗。

我找到了可以应用于滚动区域的样式表,因此背景是透明的。这是我使用的样式表:

QScrollArea { background: transparent; }
QScrollArea > QWidget > QWidget { background: transparent; }

问题是,当我这样做时,scrollarea的滚动条搞砸了: enter image description here

你知道吗?滚动条现在始终可见,并且丑陋透明。

如何使样式表不影响滚动条,同时仍将其应用于QScrollArea?或者我应该应用哪种不同的样式表?

2 个答案:

答案 0 :(得分:2)

尝试为滚动区域视口设置对象名称:

pScrollArea->viewport()->setObjectName("myViewport");

然后使用样式表中的hashtag属性解决它(也可以添加组框,因为我在截图中看到它的方式,你的目标是让它们透明):

QScrollArea, #myViewport, QGroupBox { 
  background: transparent;
}

答案 1 :(得分:0)

问题是QScrollBar是QWidget的子类,所以只需使用该规则定位视口:

pScrollArea->setStyleSheet("QScrollArea { background: transparent; }");
pScrollArea->viewport()->setStyleSheet(".QWidget { background: transparent; }");

注意QWidget之前的点,以便不针对视口的任何子节点(即任何视口内容是QWidget子类)。