从QLineEdit :: textEdited()内部编辑之前获取文本

时间:2014-06-04 14:11:28

标签: c++ qt qtgui qlineedit qvalidator

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

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

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

或者是否有另一种拦截文本更改的方法(可能通过验证器),这样我可以在更改之前和更改后同时获取文本?最好仅限用户更改(非程序化)。

1 个答案:

答案 0 :(得分:1)

  

现在我只能想到在QString中保存旧文本,并在每次编辑时更新该QString,但是我需要考虑编程更改(通过QLineEdit :: setText()创建)< / p>

当然,我也只能想到这一点,但请注意,与textEdited()不同,textChanged()允许您甚至根据文档捕获程序化更改:

  

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