我有一个小部件,背景不透明但是灰色,如图所示:
我有一个带有布局的自定义小部件,此ScrollArea
内有此样式:
background-color: white;
margin: 5px; /*so it appears with 5 px around. the scroll bar is separated then*/
padding: 0px;
在视口中使用此样式查看(setWidget)的通用QWidget
内:
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.
答案 0 :(得分:1)
这个问题的答案是添加这行代码。
paramPanelViewportWidget->setAttribute(Qt::WA_TranslucentBackground, true);
它仍有一些问题。现在它完美地响应透明背景和颜色背景。但透明显示包含它的白色面板背后的内容(灰色,蓝色背景)。
但是这个属性DOESN'T可以在WindowsXP上运行。这是一个已知的错误,至少是QT 4.7,这是我正在使用的版本。
当我解决最后一个问题(这是原始问题的补充)时,我会将其作为答案发布。
希望它有所帮助。