Qt: невозможно установить цвет фона для qwidget с родительским фоновым изображением

У меня есть 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);

}

person adi    schedule 09.08.2018    source источник
comment
установить black->setObjectName("black"); перед black->setStyleSheet("QWidget#black{ border-image:url(black_bg.png)}");   -  person eyllanesc    schedule 09.08.2018
comment
Эй, спасибо, чувак!!! Какое имя объекта по умолчанию? Не могли бы вы порекомендовать некоторые учебники/блоги, чтобы понять эти концепции, отличные от документации Qt...   -  person adi    schedule 09.08.2018
comment
Если вы создаете его по коду, objectName будет "", если вы используете Qt Designer, вы можете увидеть его в свойствах, просто прочитайте документы, там много примеров.   -  person eyllanesc    schedule 09.08.2018
comment
или вы можете установить имя объекта, используя метод setObjectName из кода.   -  person Akın Yılmaz    schedule 10.08.2018