我正在尝试实现一个功能,如果用户在一段时间内没有与GUI交互,我将停止GUI的某些功能。
目前我已设置时间戳,以便在X秒内未点击任何按钮时,GUI将终止某些功能
button1.triggered.connect(keep_alive)
button2.triggered.connect(keep_alive)
....
buttonN.triggered.connect(keep_alive)
正如您所看到的,这不是很优雅,并且随着按钮的增加不会缩放。因此,我正在研究另一种方法,以便监控鼠标点击次数
mouse = app.mouseButtons()
if mouse != Qtcore.Qt.NoButton:
#keep_alive
我认为这有点hacky,但它适用于我设想的功能,但是,我不知道如何将其插入到QT的执行循环中。
任何建议都将受到赞赏
答案 0 :(得分:0)
您必须通过重新实现mousePressEvent
来拦截鼠标事件。
http://qt-project.org/doc/qt-4.8/qwidget.html#mousePressEvent
要确保它不会影响您的其他功能,您需要将其传播到父窗口小部件。阅读更多详情:http://blog.qt.digia.com/blog/2006/05/27/mouse-event-propagation/
我将继续在主窗口中实现它,并确保所有鼠标事件都传播到它。