2

当我收到QLineEdit::textEdited()信号时,我能看到编辑前的文本吗?我需要比较编辑前的文本和编辑后的文本。

textEdited()信号只有一个参数,即新文本。调用QLineEdit::text()还会返回新文本。

现在我只能想到将旧文本保存在 QString 中,并在每次进行编辑时更新该 QString,但是我需要考虑程序更改(通过 进行QLineEdit::setText())。

或者是否有另一种方法来拦截文本更改(也许通过验证器),这将允许我同时在更改之前和更改之后获取文本?最好仅用于用户更改(非编程)。

4

1 回答 1

1

现在我只能想到将旧文本保存在 QString 中,并在每次进行编辑时更新该 QString,但随后我需要考虑程序更改(通过 QLineEdit::setText() 进行)

当然,我也只能这样想,但请注意,与 textEdited() 不同,textChanged() 甚至可以让您根据文档捕捉程序更改:

与 textChanged() 不同,当以编程方式更改文本时不会发出此信号,例如,通过调用 setText()。

于 2014-06-05T01:50:08.257 回答