2

我通过以下方式制作了一个 QMessageBox:

msgBox.setText("Are you sure?");
msgBox.setStandardButtons(QMessageBox::Yes| QMessageBox::No);
msgBox.setStyleSheet("background-image: url(image)");
msgBox.exec();

不幸的是,在消息框上使用 setStyleSheet 会为按钮、文本框和实际的 msgbox 设置背景。这不是我想要的。我只希望 msgbox 有背景而不是消息框的其他组件。我发现使用:

msgBox.button(QMessageBox::Yes)->setStyleSheet(...)

可用于仅在按钮上设置背景。是否有一个命令可以只设置 msgBox 的背景,而不向按钮和文本框添加背景?

4

1 回答 1

3

您可以使用选择器来限制将应用样式的元素。因此,要将样式仅应用于QMessageBox自身而不是其子级,您将使用:

msgBox.setStyleSheet("QMessageBox { background-image: url(image) }");

有关更多详细信息,请参阅样式表语法 - 选择器类型

于 2012-06-27T13:57:28.880 回答