背景类型和颜色在Qt中不起作用

时间:2013-01-14 14:19:29

标签: qt background background-color qtstylesheets

我有一个小部件,背景不透明但是灰色,如图所示:

The gray zone. Its set to white, but still appears gray

我有一个带有布局的自定义小部件,此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.

1 个答案:

答案 0 :(得分:1)

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

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

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

但是这个属性DOESN'T可以在WindowsXP上运行。这是一个已知的错误,至少是QT 4.7,这是我正在使用的版本。

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

希望它有所帮助。