我想创建一个工具栏,直到光标接近工具栏的位置才会出现。
例如,如果vlc全屏显示,下面的工具栏会在一段时间后消失,如果不活动,当您使用光标接近它时,它会出现。
我可以用PyQt或PySide做到这一点,即在光标位于窗口的上半部分之前使工具栏不可见吗?
答案 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
此致