qt 如何给一个widget设置背景图,但是不要让它里面的控件不跟随设置这个背景图
时间: 2024-05-08 17:20:43 浏览: 400
可以使用样式表来为 QWidget 设置背景图,同时在样式表中使用子选择器 `QWidget *` 来选择所有子控件并将它们的背景色设置为透明,这样子控件就不会跟随父控件的背景图设置了。
下面是一个示例:
```cpp
QLabel* label = new QLabel("Hello World");
QWidget* widget = new QWidget();
QPixmap pixmap("background.png");
QPalette palette;
palette.setBrush(widget->backgroundRole(), QBrush(pixmap));
widget->setPalette(palette);
widget->setAutoFillBackground(true);
widget->setStyleSheet("QWidget * { background-color: transparent; }");
widget->setLayout(new QVBoxLayout());
widget->layout()->addWidget(label);
widget->show();
```
在上面的代码中,首先创建了一个 QLabel,并将其添加到一个背景为背景图的 QWidget 中。然后使用样式表将 QWidget 的背景图设置为 `background.png`,并将所有子控件的背景色设置为透明。最后将 QLabel 添加到 QWidget 的布局中并显示出来。
阅读全文