QLineEdit::textEdited() equivalent in QTextEdit?



QLineEdit中,有一个textEdit()信号,它只在用户更改文本时才发出,但在你调用setText()时不会发出,

那么QTextEdit中的等价物是什么?我只看到一个textChanged()信号,文档指出每当文本文档更改时都会发出它。

编辑

我想实现自动保存功能,当然是使用 QTimer,

因此,当您开始编辑文档时,计时器会启动,超时时,我将文本保存在小部件中。

您可以在自己插入/修改内容时阻止QTextEdit小部件的信号,然后在完成后释放阻止。通过这样做,只有在用户更改内容时才会发出信号。

bool QObject::blockSignals(bool block)

我查找了导师的代码,他以这种方式解决了问题:

  1. QTextEdit对象安装事件过滤器(this是指向 mEdit 持有者的指针,即 QWidget)
mEdit->installEventFilter(this);
  1. 重写类中QObject::eventFilter方法,其中包含QTextEdit对象(请记住,它是QWidget继承器)
//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

相关内容

  • 没有找到相关文章

最新更新