qt - QWidget 多种样式无法正常工作
问题描述
当我尝试在一个小部件上设置多个样式时,只应用第一个样式。
我想删除当我将鼠标悬停在 QToolButton 上时出现的边框以及菜单中的向下箭头。
基本上,该按钮包含一个设置动画速度的菜单,例如视频播放器。
这是我的代码:
ui->tool_speed_button->setStyleSheet("border: none; QToolButton::down-arrow {image: none;}");
这是边框和向下箭头:
我的 QToolButton
无论我将该代码片段放在我的代码中,还是直接在 Qt 设计器上设置样式,在这两种情况下它仍然只应用第一个样式。
如何将两种样式应用于同一个对象?
解决方案
如果您要将样式应用于小部件下的多个对象或子对象,则需要将参数分组到要应用它的对象。
在您的样式表字符串中,您留下"border: none;"
悬空但也有一个QToolButton
. 仅当您仅将样式应用于tool_speed_button
.
尝试这样的事情:
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
is aQToolButton
本身,它将大括号中指定的样式应用于自身及其所有子项。
编辑:
我错了。正如问题所暗示的那样,您可以在大括号下没有分组的样式表属性。悬空属性仅适用于小部件中的所有相关对象。
推荐阅读
- kubernetes - 节点组之间的 AWS EKS 通信
- python - 创建一个列,将数字评级分类为正面、中性、负面
- excel - 获取列中第一个空单元格的行号并将该值存储在其他单元格中
- r - 为什么 confint() 结果每次都改变?
- javascript - 如何在onclick事件完成后将“按钮”按钮更改为“提交”按钮onclick而不提交?
- python-3.x - Python 3 tkinter 登录程序
- java - Junit动态测试用例从文件中读取数据?
- javascript - 我想通过 javascript 选择卡片并复制 10 次
- python-3.x - 循环输入值以列出直到在 Python 中正确
- c - 将字符串内容转换为指针