Python PyQt5在Qtextedit上发出点击信号
我的qtextedit字段中有一些预定义的文本。 我想让它一点击就消失。 所以我试图为它创建一个“点击”信号。以下是我所拥有的(只是重要的几行:Python PyQt5在Qtextedit上发出点击信号,python,pyqt,pyqt5,qt-designer,qtextedit,Python,Pyqt,Pyqt5,Qt Designer,Qtextedit,我的qtextedit字段中有一些预定义的文本。 我想让它一点击就消失。 所以我试图为它创建一个“点击”信号。以下是我所拥有的(只是重要的几行: from PyQt5.QtCore import pyqtSignal from PyQt5 import QtCore, QtGui, QtWidgets (……) (……) 我获得AttributeError:“QTextEdit”对象没有“单击”属性 我可以提供其余的代码,但目前它只是一个没有功能的ui。您不应该调用与另一个现有类相等的类,这可
from PyQt5.QtCore import pyqtSignal
from PyQt5 import QtCore, QtGui, QtWidgets
(……)
(……)
我获得AttributeError:“QTextEdit”对象没有“单击”属性
我可以提供其余的代码,但目前它只是一个没有功能的ui。您不应该调用与另一个现有类相等的类,这可能会导致冲突,从而导致许多问题 除以下代码中的内容外:
self.userfield = QtWidgets.QTextEdit(self.centralwidget)
您告诉他们使用来自QtWidgets模块的QTextEdit,而不是您的类
解决方案:
# ...
class TextEdit(QtWidgets.QTextEdit):
clicked = pyqtSignal()
def mouseReleaseEvent(self,event):
self.clicked.emit()
# ...
self.userfield = TextEdit(self.centralwidget)
self.userfield.setMaximumSize(QtCore.QSize(200, 30))
self.userfield.setObjectName("userfield")
self.userfield.clicked.connect(self.txt)
# ...
哦,当然!谢谢!我已经读了很多关于事件过滤器的书,这是一个更好的解决方案吗?或者这样可以吗?@Error1Man两者都是等效的,我在无法覆盖类时使用eventFilter。
self.userfield = QtWidgets.QTextEdit(self.centralwidget)
# ...
class TextEdit(QtWidgets.QTextEdit):
clicked = pyqtSignal()
def mouseReleaseEvent(self,event):
self.clicked.emit()
# ...
self.userfield = TextEdit(self.centralwidget)
self.userfield.setMaximumSize(QtCore.QSize(200, 30))
self.userfield.setObjectName("userfield")
self.userfield.clicked.connect(self.txt)
# ...