Я создал пользовательскую производную 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()
Изображение: перед нажатием кнопки
![](https://i.stack.imgur.com/KrNRm.png)
Изображение: после нажатия кнопки QToolButton
![](https://i.stack.imgur.com/MLKhT.png)