一位同事制作了一个定制的 QMenu 衍生产品,以便在菜单关闭之前可以选择多个条目。
它是通过 QToolButton 触发的。
问题是如果菜单足够大,它将与按钮重叠。单击 QToolButton 时,当前光标位置的项目会立即被选中。
如何防止这种情况发生?
我的菜单代码,我试图忽略第一个带有 Bool 标志的事件,但它不起作用。
class StayOpenMenu(QMenu):
"""
a class that overrides the QMenu mouseReleaseEvent to let the menu stay open when an element is selected
"""
def __init__(self, parent=None):
self.isfirstEvent = True
super().__init__("Stay open Menu", parent=parent)
def mouseReleaseEvent(self, a0: QMouseEvent):
if self.isfirstEvent:
a0.ignore()
self.isfirstEvent = False
return
try:
action = self.actionAt(a0.pos())
action.trigger()
except:
pass
def aboutToShow(self):
self.isfirstEvent = True
return super().aboutToShow()
def aboutToHide(self):
self.isfirstEvent = True
return super().aboutToShow()
图片:点击按钮之前
图片:点击 QToolButton 后