首页 > 解决方案 > 如何为 QPushButton 的工具提示设置背景?

问题描述

在 Qt 中,我为 QPushButton 设置了背景图像,然后为此按钮添加了工具提示,并且工具提示与按钮具有相同的背景图像,但我无法使用样式表更改它,我错过了什么?

在我的代码中,我有:

button->setStyleSheet("background-image: url(pathToImage);");
button->setToolTip("Click here");

在我的 style.qss 中,我有:

QToolTip{
    background-image: none;
    background-color: white;
    font-size: 20px;
    border: 1px solid black;
}

字体大小和边框有效,但工具提示的背景图像与按钮的相同。我还尝试在工具提示中添加另一个背景图像,它也没有工作。

如何更改工具提示的背景?

标签: c++qttooltipqtstylesheetsqpushbutton

解决方案


您必须指定QWidget应用属性的位置。如果您不这样做,它会将其应用于小部件的所有子级。

在您的情况下,要避免工具提示中的背景图像,您必须指定要将该样式应用于 QPushButton 小部件。文档说:

如果我们希望该属性仅适用于作为特定对话框的子(或孙子或孙子)的 QLineEdit,我们宁愿这样做:

myDialog->setStyleSheet("QLineEdit { 背景色:黄色 }");

在您提到的示例中,如果要修改工具提示和按钮的样式,请执行以下操作:

ui->pushButton->setStyleSheet(""
    "QPushButton { background-image: url(me.png); }"
    "QToolTip { color: #ffffff; background-color: #000000; border: 0px; }");

它会给你这样的东西

在此处输入图像描述

更新:

如果您想将其应用于单个对象而不是相同类型的其余小部件,文档说:

如果我们希望该属性仅适用于一个特定的 QLineEdit,我们可以使用 QObject::setObjectName() 为其命名并使用 ID 选择器来引用它:

myDialog->setStyleSheet("QLineEdit#nameEdit { background-color: yellow }");

所以在你的情况下:

ui->pushButton->setObjectName("awesomeButton");
ui->pushButton->setStyleSheet("QPushButton#awesomeButton { background-image: url(me.png); }");

推荐阅读