我想删除我的 QListView 的背景,以便可以看到下面的背景。我怎样才能做到这一点?
我试过了setAttribute(Qt::WA_NoSystemBackground)
,setAttribute(Qt::WA_NoBackground)
但这并没有改变任何东西。我也不能覆盖paintEvent()
,否则它不会绘制项目。
任何的想法?
我想删除我的 QListView 的背景,以便可以看到下面的背景。我怎样才能做到这一点?
我试过了setAttribute(Qt::WA_NoSystemBackground)
,setAttribute(Qt::WA_NoBackground)
但这并没有改变任何东西。我也不能覆盖paintEvent()
,否则它不会绘制项目。
任何的想法?
不要忘记作为 QListView 的基类的 QScrollArea 包含称为 Viewport 的“另一个”小部件。它可以通过 viewport() 方法访问。
实现透明度您可以简单地调用:
视口()->setAutoFillBackground(假);
并取决于其他设置(即父小部件设置)您应该看到背景。
答案取决于您是否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,以便小部件不会自动填充背景。