在Qt中调用SetText()后,QLineEdit无法撤消

时间:2013-03-06 13:31:53

标签: c++ qt

在我的应用程序中,我有许多QLineEdit个小部件。用户可以编辑它们。 我观察到如果我将文字添加到QLineEditGUI&然后,如果QLineEdit有光标,那么如果按ctrl+z,则撤消文本,使其中没有文字。 现在,如果我按SetText("some text")按代码设置文本,则undo方法无法使用ctrl+z。即使我通过代码undo仍然不清除文本。问题是什么?我错过了什么吗? 谢谢。

1 个答案:

答案 0 :(得分:3)

undo可能认为SetText设置的值应被视为默认起始值​​,不需要undo。对我来说似乎是正常的行为。

以下是SetText()定义:

此属性包含行编辑的文本。 设置此属性将清除选择,清除撤消/重做历史记录,将光标移动到行的末尾并将modified属性重置为false。使用setText()插入时,不验证文本。 文本被截断为maxLength()长度。 默认情况下,此属性包含空字符串。 调用setText()会将修改后的标志重置为false。

也许如果您将setModified ( bool )设置为true,则会为您解决此问题

编辑: 找到解决方法:insert(QString text)可以与undo()一起使用