今天在写一个Qt程序,全屏时隐藏工具栏,但是鼠标向上滑到顶时,工具栏出现。
开始的思路是重载MainWindow的mouseMoveEvent方法,发现不行:只有鼠标点下时才会触发。
后来查到需要将mouseTracking设为True,可是我设了之后还是不行。
再后来查资料+自己尝试,得出方法:利用eventFilter捕获HoverEvent事件。
在MainWindow的构造函数里加入 :(我用的是PyQt)
self.installEventFilter(self)
实现eventFilter方法:
def eventFilter(self, obj, event):
# 处理全屏时,上划鼠标显示工具样
if (self.isFullScreen()):
if event.type() == QEvent.HoverMove and obj == self:
# print 'HoverMove (%d, %d)' % (event.pos().x(), event.pos().y())
if event.pos().y() < 10:
self.toolBar.setVisible(True)
elif event.pos().y() > self.toolBar.height():
self.toolBar.setVisible(not self.isFullScreen())