PySide6:如何为QAction对应工具栏按钮设样式表及修改提示框样式?
解决方案
问题1:QAction的ToolTip样式不生效
QAction不是Widget,直接给它设置QToolTip样式表不会生效。ToolTip的样式继承自父Widget,你需要把样式规则应用到父窗口或者QToolBar本身,而非QAction。
修改方式如下:
# 给工具栏设置ToolTip样式 self.toolbar.setStyleSheet(""" QToolTip { color: rgb(0, 0, 0); background-color: rgb(255, 255, 204); border: 2px solid black; font-family: Times New Roman; } """)
如果希望整个应用的ToolTip都使用该样式,也可以直接给QApplication设置:
from PyQt5.QtWidgets import QApplication app = QApplication.instance() app.setStyleSheet("QToolTip { color: rgb(0,0,0); background-color: rgb(255,255,204); border: 2px solid black; font-family: Times New Roman; }")
问题2:给QAction对应的工具栏按钮设置样式
工具栏中QAction对应的实际控件是QToolButton,可以通过两种方式设置样式:
方法1:给QToolBar设置全局样式表,针对QToolButton
直接给工具栏添加样式规则,匹配内部的QToolButton,还能通过状态选择器(如:hover、:checked)设置不同状态的样式:
self.toolbar.setStyleSheet(""" QToolTip { color: rgb(0, 0, 0); background-color: rgb(255, 255, 204); border: 2px solid black; font-family: Times New Roman; } QToolBar QToolButton { border: 1px solid transparent; padding: 2px; border-radius: 3px; } QToolBar QToolButton:hover { background-color: #e0e0e0; } QToolBar QToolButton:checked { background-color: #c0c0c0; border-color: #808080; } """)
方法2:找到对应QToolButton实例单独设置
如果只想给这个Connect按钮单独设置样式,可以在添加完action后,通过findChildren找到对应的按钮再配置:
# 必须在addAction之后执行,确保按钮已创建 for btn in self.toolbar.findChildren(QToolButton): if btn.defaultAction() == connect_action: btn.setStyleSheet(""" QToolButton { border: 2px solid blue; } QToolButton:checked { background-color: lightblue; } """) break
内容的提问来源于stack exchange,提问作者Raven
相关产品推荐
相关产品推荐

