c++ - 如何为 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;
}
字体大小和边框有效,但工具提示的背景图像与按钮的相同。我还尝试在工具提示中添加另一个背景图像,它也没有工作。
如何更改工具提示的背景?
解决方案
您必须指定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); }");
推荐阅读
- ruby-on-rails - 在功能测试(Capybara)中在哪里创建父模型实例?
- android - 如果对所有选项卡使用相同的片段,则 viewpager、recylerview 不起作用
- python - 使用 BeautifulSoup 抓取网页时如何移动到新页面?
- web-scraping - 从 https://ngodarpan.gov.in/index.php/home/statewise_ngo/61/35 抓取网页
- angular - 如何处理 rxjs 和 angular 5 中的 Observables,bootstrap typeahead 实现的问题
- c# - 使用 MVVM 在 WPF 应用程序中将 ObservableCollection 绑定到 ComboBox
- python - 如何使用 python 将 XML 转换为 JSON?
- elasticsearch - 更改 AWS Elasticsearch 属性(没有 elasticsearch.yml),例如线程池队列大小
- ios - `initWithNibName` 上的内存泄漏
- sql-server - 在 SSIS 中引入正确的日期格式