Qt:无法为具有父背景图像的qwidget设置背景颜色
我有一个QWidget(基本上是一个QComboBox),我给它设置了一个背景色(白色)。这个QComboBox有一个有背景图像的父控件。 输出如下所示: 组合框不是完全白色的,并且有一些父BG图像的影响。我已经发布了我使用QtCreator的地方,它与提供的解决方案一起工作 但是,当我尝试使用相同的解决方案动态创建小部件时,BG映像正在消失 下面是我的代码:Qt:无法为具有父背景图像的qwidget设置背景颜色,qt,qcombobox,qtstylesheets,qt5.9,Qt,Qcombobox,Qtstylesheets,Qt5.9,我有一个QWidget(基本上是一个QComboBox),我给它设置了一个背景色(白色)。这个QComboBox有一个有背景图像的父控件。 输出如下所示: 组合框不是完全白色的,并且有一些父BG图像的影响。我已经发布了我使用QtCreator的地方,它与提供的解决方案一起工作 但是,当我尝试使用相同的解决方案动态创建小部件时,BG映像正在消失 下面是我的代码: MainWindow::MainWindow(QWidget *parent) : QWidget(parent), ui(new U
MainWindow::MainWindow(QWidget *parent) :
QWidget(parent),
ui(new Ui::MainWindow)
{
QPixmap bkgnd("blue_bg.png");
bkgnd.scaled(this->size(), Qt::IgnoreAspectRatio);
QPalette palette;
palette.setBrush(QPalette::Background, bkgnd);
this->setPalette(palette);
QHBoxLayout* hbl = new QHBoxLayout(this);
QWidget *black = new QWidget;
black->setMaximumHeight(200);
black->setStyleSheet ("border-image:url(black_bg.png)");
//black->setStyleSheet ("QWidget#black{ border-image:url(black_bg.png)}");
//I tried this as per the link's answer but this hides/removes the black_bg.png image itself
hbl->addWidget(black);
f1(black);
}
void MainWindow::f1(QWidget *black)
{
QVBoxLayout *blackLayout = new QVBoxLayout(black);
QHBoxLayout *comboBoxLayout = new QHBoxLayout;
QLabel *comboBoxLabel = new QLabel("Label");
comboBoxLabel->setAttribute(Qt::WA_TranslucentBackground);
comboBoxLabel->setStyleSheet("color:white");
comboBoxLabel->setMaximumWidth(300);
comboBoxLabel->setAlignment(Qt::AlignTop);
comboBoxLayout->addWidget(comboBoxLabel);
QComboBox *comboBox = new QComboBox;
comboBox->addItem("String");
comboBox->setMaximumHeight(500);
comboBoxLayout->addWidget(comboBox);
blackLayout->addLayout(comboBoxLayout);
}
设置
黑色->设置对象名称(“黑色”)
beforeblack->setStyleSheet(“QWidget#black{border image:url(black#bg.png)}”)嘿,谢谢你,伙计!!!默认的对象名是什么?你能推荐一些教程/博客来理解这些概念而不是Qt文档吗?如果你是通过代码创建的,对象名是”
,如果你使用Qt Designer,你可以在属性中看到它,只需阅读文档,这里有很多例子。或者您可以使用代码中的setObjectName方法设置对象名。