我有一个QWidget(基本上是一个QComboBox),我在其中设置了背景颜色(白色)。这个QComboBox有一个父控件,该父控件具有背景图像。 输出看起来像这样:
组合框不是完全白色,并且对父BG图像有一定影响。我发布了this question,其中我使用了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);
}