当我尝试在小部件上设置多种样式时,仅应用第一个样式。
我要删除悬停在QToolButton上时出现的边框以及菜单中的向下箭头。
基本上,该按钮包含一个菜单,用于设置动画的速度,例如视频播放器。
这是我的代码:
ui->tool_speed_button->setStyleSheet("border: none; QToolButton::down-arrow {image: none;}");
这是边框和向下箭头:
我的QToolButton
无论是将代码段放入代码中,还是直接在Qt Designer上设置样式,这两种情况都仅应用第一种样式。
如何将两种样式应用于同一对象?
答案 0 :(得分:0)
如果要在小部件下将样式应用于多个对象或子对象,则需要将参数分组到要应用样式的对象上。
在样式表字符串中,您悬垂了"border: none;"
,但也拥有QToolButton
的样式。仅当您仅将样式应用于tool_speed_button
时,您才能d0这样的事情。
尝试这样的事情:
ui->tool_speed_button->setStyleSheet("QWidget{border: none; }QToolButton::down-arrow {image: none;}");
您需要将Qwidget
替换为tool_speed_button
类型。在Qt中启动项目时,可以在设计器文件中检查MainWindow的样式表,以获取有关如何设置样式表格式的更多示例。
在您的情况下,您可以这样做:
ui->tool_speed_button->setStyleSheet("QToolButton::down-arrow {border: none;image: none;}");
只想对我的答案中第一个样式表示例的含义进行解释:
在样式字符串中,第一组QWidget{border:none;}
将样式应用于属于QWidget
的任何tool_speed_button
。
QToolButton::down-arrow {image: none;}
仅将样式应用于属于QToolButton
且类型为tool_speed_button
的任何down-arrow
(这是{ QToolButton
)。由于tool_speed_button
本身就是QToolButton
,因此将括号中指定的样式应用于自身及其所有子元素。
我错了。您可以将样式表属性悬挂在一起,而不必将大括号括起来,就像问题所暗示的那样。悬空属性仅适用于小部件中的所有相关对象。