我有一个QLineEdit,我需要知道是否有一个信号可以跟踪鼠标悬停在那个QLineEdit上,一旦鼠标超过了那个QLineEdit,它就会发出一个信号。
我看过这些文件,发现我们有以下信号:
cursorPositionChanged ( int旧,int新) editingFinished () returnPressed () selectionChanged () textChanged ( const QString & text ) textEdited ( const QString & text )
然而,所有这些都不适合悬停。您能建议在PyQt4中是否可以用其他方法来完成这个任务吗?
发布于 2014-02-20 06:51:36
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_())发布于 2014-02-20 06:39:24
您可以使用enterEvent,leaveEvent,在鼠标进入小部件时触发enterEvent,在鼠标离开小部件时触发离开事件。这些事件在QWidget类中,QLineEdit继承QWidget,因此可以在QLineEdit中使用这些事件。您在QLineEdit的文档中没有看到这些事件,请单击所有成员的链接列表,包括页面顶部的继承成员。
https://stackoverflow.com/questions/21899681
复制相似问题