如何在无父母的QWidget中接收QMainWindow mouseClick事件?

问题描述 投票:0回答:1

我有一个QMainWindow应用程序,该应用程序生成多个QWidget弹出窗口。我想知道如果用户单击主QMainWindow,如何销毁弹出的QWidget。我不确定如何继续解决此问题。我不想干扰任何QMainWindow事件,我只想通过在弹出窗口小部件区域之外单击任何鼠标来销毁其他弹出窗口。是否可以通过信号插槽机制或eventFilter进行推荐?是否可以不处理(x,y)坐标?

感谢您的建议。

python pyqt5 qwidget qmainwindow
1个回答
0
投票

我设法解决了我的问题。我实现了一个包含mousePressedEvent的自定义标签(如this)。单击此标签后,将生成一个Pop小部件。 mousePressEvent不会从标签进一步传播。然后,我在QMainWindow中实现了mousePressedEvent,在其中检查弹出窗口的存在。如果它们存在,我将其全部关闭。请注意,如果我没有在标签mousePressEvent中停止鼠标的传播,则在单击标签时会生成弹出窗口,但是它会被QMainWindow mousePressEvent关闭,因为(很可能)该事件正在传播到QMainWindow。至少,这解决了我的问题。

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.