光标逼近时显示工具栏

时间:2014-08-16 11:37:16

标签: python-3.x pyqt4 pyside toolbar

我想创建一个工具栏,直到光标接近工具栏的位置才会出现。

例如,如果vlc全屏显示,下面的工具栏会在一段时间后消失,如果不活动,当您使用光标接近它时,它会出现。

我可以用PyQt或PySide做到这一点,即在光标位于窗口的上半部分之前使工具栏不可见吗?

1 个答案:

答案 0 :(得分:4)

非常有趣!

是的,你可以。关键字是移动时的所有跟踪鼠标。在pyqt中使用QWidget.mouseMoveEvent (self, QMouseEvent),但此方法仅跟踪鼠标何时按下,因此您必须使用QWidget.setMouseTracking (self, bool enable)启用所有移动。

好的,请参阅QWidget中的示例代码工具,您也可以实现QMainWindow(不同的是QMainWindow已经有QMenuBar),希望有帮助;

import sys
from PyQt4 import QtGui

class QTestWidget (QtGui.QWidget):
    def __init__ (self):
        super(QTestWidget, self).__init__()
        self.myQMenuBar = QtGui.QMenuBar(self)
        exitMenu = self.myQMenuBar.addMenu('File')
        exitAction = QtGui.QAction('Exit', self)        
        exitAction.triggered.connect(QtGui.qApp.quit)
        exitMenu.addAction(exitAction)
        self.myQMenuBar.hide()
        self.setMouseTracking(True)

    def mouseMoveEvent (self, eventQMouseEvent):
        self.myQMenuBar.setVisible(True if eventQMouseEvent.y() <= 23 else False)
        QtGui.QWidget.mouseMoveEvent(self, eventQMouseEvent)

myQApplication = QtGui.QApplication(sys.argv)
myQTestWidget = QTestWidget()
myQTestWidget.show()
myQApplication.exec_()

QWidget.mouseMoveEvent (self, QMouseEvent)参考http://pyqt.sourceforge.net/Docs/PyQt4/qwidget.html#mouseMoveEvent

QWidget.setMouseTracking (self, bool enable)参考http://pyqt.sourceforge.net/Docs/PyQt4/qwidget.html#setMouseTracking


此致