QTextEdit中的QLineEdit::textEdited()等效方法是什么?

5
QLineEdit中,有一个textEdit()信号,只有在用户更改文本时才发出,但不是当您调用setText()时发出。
那么,在QTextEdit中的等价物是什么?我只看到一个textChanged()信号,并且文档说明它在文本文档更改时发出。
编辑
我想实现自动保存功能,当然,需要使用QTimer,
所以当开始编辑文档时,计时器启动,超时时,我将保存小部件中的文本。

我认为没有这方面的信号。这是什么场景? - Mitch
2个回答

12

每当您自己插入/修改QTextEdit部件的内容时,可以阻止信号,并在完成后释放该阻止。这样做将使信号仅在用户更改内容时发出。

bool QObject::blockSignals(bool block)

0

我找到了我的导师的代码,他是这样解决问题的:

  1. QTextEdit 对象安装事件过滤器(this 是指向 mEdit 持有者的指针,它是 QWidget)
mEdit->installEventFilter(this);
在包含对象(记住,它是QWidget的继承者)的类中覆盖QObject::eventFilter方法。
//override
bool CustomEditWidget::eventFilter(QObject *watched, QEvent *event)
{
    if(watched == mEdit && event->type() == QEvent::FocusOut){
        changeValue(mEdit->toPlainText());
    }
    return false;
}

其余内容请参阅文档,其中包括示例:https://doc.qt.io/qt-6/qobject.html#eventFilter


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接