【问题标题】:PyQt5 emit clicked signal on QtexteditPyQt5 在 Qtextedit 上发出点击信号
【发布时间】:2018-04-11 19:09:37
【问题描述】:

我的 qtextedit 字段中有一些预定义的文本。 我想让它在点击后立即消失。 所以我试图为它创建一个“点击”信号。这是我所拥有的(只是重要的几行:

from PyQt5.QtCore import pyqtSignal
from PyQt5 import QtCore, QtGui, QtWidgets

(...)

class QTextEdit(QtWidgets.QTextEdit):
    clicked = pyqtSignal()
    def mouseReleaseEvent(self,event):
        self.clicked.emit()

(...)

    self.userfield = QtWidgets.QTextEdit(self.centralwidget)
    self.userfield.setMaximumSize(QtCore.QSize(200, 30))
    self.userfield.setObjectName("userfield")
    self.userfield.clicked.connect(lambda: self.txt())

我得到 AttributeError: 'QTextEdit' 对象没有属性 'clicked'

我可以提供其余的代码,但它现在只是一个不起作用的用户界面。

【问题讨论】:

    标签: python pyqt pyqt5 qt-designer qtextedit


    【解决方案1】:

    你不应该调用一个等于另一个现有类的类,这可能会导致你发生冲突并因此产生很多问题。

    除此之外的代码如下:

    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)
        # ...
    

    【讨论】:

    • 哦,当然!谢谢你!我已经阅读了很多关于事件过滤器的内容,这会是一个更好的解决方案吗?或者这样可以吗?
    • @wrong1man 两者是等价的,当我无法覆盖类时,我使用 eventFilter。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 2018-04-15
    • 2019-12-01
    • 2019-07-31
    • 1970-01-01
    相关资源
    最近更新 更多