Qt QWidget多个样式无法正常工作
当我尝试在一个小部件上设置多个样式时,只应用第一个样式 我想删除当我将鼠标悬停在QToolButton上时出现的边框以及菜单中的向下箭头 基本上,按钮包含设置动画速度的菜单,如视频播放器 这是我的密码:Qt QWidget多个样式无法正常工作,qt,qt5,qtstylesheets,qt5.10,Qt,Qt5,Qtstylesheets,Qt5.10,当我尝试在一个小部件上设置多个样式时,只应用第一个样式 我想删除当我将鼠标悬停在QToolButton上时出现的边框以及菜单中的向下箭头 基本上,按钮包含设置动画速度的菜单,如视频播放器 这是我的密码: ui->tool_speed_button->setStyleSheet("border: none; QToolButton::down-arrow {image: none;}"); 这是边框和向下箭头: 我的QToolButton 无论我是将代码片段放入代码中,还是直接在Q
ui->tool_speed_button->setStyleSheet("border: none; QToolButton::down-arrow {image: none;}");
这是边框和向下箭头:
我的QToolButton
无论我是将代码片段放入代码中,还是直接在Qt设计器上设置样式,它仍然只在这两种情况下应用第一种样式
如何将两种样式应用于同一对象?如果要将样式应用于小部件下的多个对象或子对象,则需要将参数分组到要应用样式的对象
在样式表字符串中,您将边框:none;“
挂起,但也有一个QToolButton
的样式。只有将样式仅应用于工具\速度\按钮
时,才能执行此操作
试着这样做:
ui->tool_speed_button->setStyleSheet("QWidget{border: none; }QToolButton::down-arrow {image: none;}");
您需要将Qwidget
替换为tool\u speed\u按钮类型
。在Qt中启动项目时,可以在设计器文件中检查主窗口的样式表,以获取有关如何格式化样式表的更多示例
在您的情况下,您可以这样做:
ui->tool_speed_button->setStyleSheet("QToolButton::down-arrow {border: none;image: none;}");
编辑
我只是想为我的答案中的第一个样式表示例添加一个解释:
在样式字符串中,第一组QWidget{border:none;}
将样式应用于属于tool\u speed\u按钮的任何QWidget
QToolButton::down arrow{image:none;}
仅将样式应用于属于tool\u speed\u button
且类型为down arrow
(这是QToolButton
的属性)的任何QToolButton
。由于tool\u speed\u button
本身是QToolButton
本身,因此它将大括号中指定的样式应用于自身及其所有子项
编辑:
我错了。如问题所示,您可以使用悬挂样式表属性,而不必在花括号下分组样式表属性。悬挂属性仅适用于小部件中的所有相关对象。感谢您的深入回答!遗憾的是,它在我的应用程序中不起作用。。我还尝试将我的QToolbutton子类化为一个新对象,将其中一个样式应用于新对象,将第二个样式应用于特定的QToolbutton,但它仍然不起作用。@JeyzerMC在Qt designer中编辑样式表时,它是否显示“样式表有效”或“样式表无效”?它显示“样式表有效”@你到底想在这里干什么?您是否试图删除向下箭头,只想要没有边框的…
。