Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt:无法为具有父背景图像的qwidget设置背景颜色_Qt_Qcombobox_Qtstylesheets_Qt5.9 - Fatal编程技术网

Qt:无法为具有父背景图像的qwidget设置背景颜色

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

我有一个QWidget(基本上是一个QComboBox),我给它设置了一个背景色(白色)。这个QComboBox有一个有背景图像的父控件。 输出如下所示:

组合框不是完全白色的,并且有一些父BG图像的影响。我已经发布了我使用QtCreator的地方,它与提供的解决方案一起工作

但是,当我尝试使用相同的解决方案动态创建小部件时,BG映像正在消失

下面是我的代码:

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);

}

设置
黑色->设置对象名称(“黑色”)
before
black->setStyleSheet(“QWidget#black{border image:url(black#bg.png)}”)
,如果你使用Qt Designer,你可以在属性中看到它,只需阅读文档,这里有很多例子。或者您可以使用代码中的setObjectName方法设置对象名。