QLineEdit 悬停在 Signal 上 - 当鼠标悬停在 QlineEdit 上时



我有一个QLineEdit,我需要知道是否有一个信号可以跟踪鼠标悬停在该QLineEdit上,一旦鼠标悬停在该QLineEdit上,它就会发出信号。

我看过文件,发现我们有以下信号:

cursorPositionChanged ( int old, int new )
编辑已完成 ()
返回按下 ()
选择已更改 ()
textChanged ( const QString & text )
textEdited ( const QString & text )

但是,这些都不完全适合悬停。你能建议这是否可以在 PyQt4 中通过任何其他方式完成吗?

QLineEdit 没有内置的鼠标悬停信号。

但是,通过安装事件过滤器很容易实现类似的东西。这种技术适用于任何类型的小部件,您可能唯一需要做的是设置鼠标跟踪(尽管这似乎默认为 QLineEdit 打开)。

下面的演示脚本显示了如何跟踪各种鼠标移动事件:

from PyQt4 import QtCore, QtGui
class Window(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.edit = QtGui.QLineEdit(self)
        self.edit.installEventFilter(self)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.edit)
    def eventFilter(self, source, event):
        if source is self.edit:
            if event.type() == QtCore.QEvent.MouseMove:
                pos = event.globalPos()
                print('pos: %d, %d' % (pos.x(), pos.y()))
            elif event.type() == QtCore.QEvent.Enter:
                print('ENTER')
            elif event.type() == QtCore.QEvent.Leave:
                print('LEAVE')
        return QtGui.QWidget.eventFilter(self, source, event)
if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.setGeometry(500, 300, 300, 100)
    window.show()
    sys.exit(app.exec_())
您可以使用

enterEventleaveEvent 、 当鼠标进入小部件时触发 enterEvent,在鼠标离开小部件时触发离开事件。这些事件在QWidget类中,QLineEdit继承QWidget,因此您可以在QLineEdit中使用这些事件。如果您在QLineEdit的文档中没有看到这些事件,请单击页面顶部的所有成员列表(包括继承成员)的链接。

相关内容

  • 没有找到相关文章

最新更新