首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QLineEdit悬停信号-当鼠标在QlineEdit上时

QLineEdit悬停信号-当鼠标在QlineEdit上时
EN

Stack Overflow用户
提问于 2014-02-20 06:14:12
回答 2查看 2.1K关注 0票数 2

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

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

cursorPositionChanged ( int旧,int新) editingFinished () returnPressed () selectionChanged () textChanged ( const QString & text ) textEdited ( const QString & text )

然而,所有这些都不适合悬停。您能建议在PyQt4中是否可以用其他方法来完成这个任务吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-20 06:51:36

QLineEdit没有内置鼠标悬停信号.

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

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

代码语言:javascript
复制
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_())
票数 3
EN

Stack Overflow用户

发布于 2014-02-20 06:39:24

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21899681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档