3

我想删除我的 QListView 的背景,以便可以看到下面的背景。我怎样才能做到这一点?

我试过了setAttribute(Qt::WA_NoSystemBackground)setAttribute(Qt::WA_NoBackground)但这并没有改变任何东西。我也不能覆盖paintEvent(),否则它不会绘制项目。

任何的想法?

4

2 回答 2

9

不要忘记作为 QListView 的基类的 QScrollArea 包含称为 Viewport 的“另一个”小部件。它可以通过 viewport() 方法访问。

实现透明度您可以简单地调用:

视口()->setAutoFillBackground(假);

并取决于其他设置(即父小部件设置)您应该看到背景。

于 2012-02-06T13:23:05.077 回答
2

答案取决于您是否QListView是顶级小部件。关于透明度的QWidget 文档进行了详细解释。对于顶级小部件,它可能很简单:

view->setWindowOpacity(50);

对于不是顶级的小部件,您希望将背景设置为具有 alpha 通道的背景:

QPalette palette = view->palette();
palette.setColor(QPalette::Background, Qt::transparent);
view->setPalette(palette);

你也应该能够对样式表做同样的事情:

view->setStyleSheet("background-color: transparent;");

您可能需要将autoFillBackground设置为 false,以便小部件不会自动填充背景。

于 2011-08-09T17:14:43.147 回答