【问题标题】:QT Text editor - Text is changed from last save?QT 文本编辑器 - 文本从上次保存更改?
【发布时间】:2016-07-05 22:27:34
【问题描述】:

我有一个使用QPlainTextEdit 的文本编辑器,信号modificationChanged(bool) 连接到如下所示的插槽,以了解上次保存后何时更改文本:

connect(this, SIGNAL(modificationChanged(bool)), this, SLOT(codeModificationChanged(bool)));

插槽:

void MyEdit::codeModificationChanged(bool change){
    QMessageBox::information(this, tr("Signal"),QString::number(change));
}

文档 (http://doc.qt.io/qt-4.8/qplaintextedit.html#modificationChanged) 说:

void QPlainTextEdit::modificationChanged(bool changed)

只要文档内容发生变化,就会发出这个信号 一种影响修改状态的方式。如果更改为真,则 文件已被修改;否则为假。

例如,在文档上调用setModified(false),然后 插入文本会导致信号被发射。如果您撤消该操作 操作,导致文档恢复到未修改的原始状态 状态,信号将再次发出。

我的代码是:

    QMessageBox::information(this, tr("before"),QString::number(document()->isModified()));
    clear();
    QMessageBox::information(this, tr("after"),QString::number(document()->isModified()));

结果:

  • 之前消息:(显示 0 - 文本未修改 - 可以)
  • clear()(激活槽,显示 1 - 文本已修改 - 可以)
  • 之后消息:(显示 0 - 文本未修改 - 什么?)

如何命令clear() 更改修改状态而不向modificationChanged(false) 发出信号?实际上,信号代码更复杂(更改一些变量,标题栏......),我需要知道什么时候发生。嗯...不仅clear() 命令的行为是这样的,而且还可以使用setPlainText("") 加载空文件或设置空文本。文本的那些“重置”动作只发出一个信号modification state = true,然后设置modification state = false而不发出信号。请记住,使用setModified(bool) 更改修改状态总是会为modificationChanged(bool) 生成信号。

使用setPlainText(" ") 的结果 - 用空格代替clear()setPlainText("")

  • 之前消息:(显示 0 - 文本未修改 - 可以)
  • setPlainText(" ")(激活槽,显示 1 - 文本已修改 - 可以)
  • 新信号到槽(激活槽,显示 0 - 文本未修改 - 现在可以告诉我 QT 选择更改修改状态)
  • 之后消息:(显示 0 - 文本未修改 - 可以)

我正在使用 QT 5.21。当我设置空文本但告诉我设置非空文本时,你认为 QT 可以在没有警告的情况下将修改状态更改为 false 吗?如何捕捉修改状态的任何变化?

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    用途:

    diconnect(this, SIGNAL(modificationChanged(bool)), this, SLOT(codeModificationChanged(bool)));
    clear();
    connect(this, SIGNAL(modificationChanged(bool)), this, SLOT(codeModificationChanged(bool)));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多