1

我有一个小部件,它的背景不是透明的,而是灰色的,正如您在这张图片中看到的那样:

灰色地带。 它设置为白色,但仍显示为灰色

我有一个带有布局的自定义小部件,ScrollArea里面有这种风格:

background-color: white;
margin: 5px;  /*so it appears with 5 px around. the scroll bar is separated then*/
padding: 0px;

在一个通用QWidget的视口中看到(setWidget)这种风格:

background: transparent;  // <---- HERE IS THE PROBLEM
margin: 0px;
padding: 0px;

如果我尝试一种颜色而不是透明的,它就不起作用。总是灰色的。我也试过 setAutoFillBackground(true) 但没用。(不管用样式,都不起作用)。

这两个容器的代码是这样的:

cameraModeParametersPanel_ = new QScrollArea();
(...)
cameraModeParametersPanel_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
cameraModeParametersPanel_->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
cameraModeParametersPanel_->setWidgetResizable(true);

mainParametersLayout->addWidget( cameraModeParametersPanel_ );  // the panel


QWidget* paramPanelViewportWidget = new QWidget();
(...)

QVBoxLayout* mainCameraLayout = new QVBoxLayout(paramPanelViewportWidget);
(...)
// and then i add QGroupBoxes with titles.
4

1 回答 1

1

这个问题的答案是添加这行代码。

paramPanelViewportWidget->setAttribute(Qt::WA_TranslucentBackground, true);

它仍然存在一些问题。现在它完美地响应透明背景和彩色背景。但是透明显示包含它的白色面板后面的内容(灰色、蓝色背景)。

但是这个属性在 WindowsXP 上不起作用。至少,这是我正在使用的版本 QT 4.7 的已知错误。

当我解决最后一个问题(这是原始问题的附加问题)时,我会将其发布为答案。

希望能帮助到你。

于 2013-01-16T10:12:20.093 回答