好吧,我们有私有槽方法textChanged,它在修改textEdit对象时通知我们。这个实现是相当健壮的,并告诉我们何时用键盘插入文本,复制和粘贴,以及其他大部分内容。
但是,有没有获得更改的实际文本?
答案 0 :(得分:2)
正如伊戈尔所说,你可以使用QTextDocument
。使用以下代码示例:
连接:
connect( ui->textEdit->document(), SIGNAL(contentsChange(int,int,int)), this, SLOT(change(int,int,int)));
创建广告位:
void MainWindow::change(int pos, int del, int add)
{
QString added = ui->textEdit->toPlainText().mid(pos,add);
qDebug() << added;
}
在标题中:
void change(int, int, int);
现在,您可以获取在QTextEdit
关于性能。我们来试验吧。写下这个插槽。
void MainWindow::clicked(int pos, int del, int add)
{
QElapsedTimer tmr;
tmr.start();
QString added = ui->textEdit->toPlainText().mid(pos,add);
qDebug() << added;
qDebug() << "operation tooks" << tmr.elapsed() <<" ms";
}
别忘了#include <QElapsedTimer>
输入时的输出:
operation tooks 0 ms
"f"
operation tooks 0 ms
"d"
operation tooks 0 ms
"g"
operation tooks 0 ms
"r"
operation tooks 0 ms
"d"
operation tooks 0 ms
"s"
operation tooks 0 ms
"f"
operation tooks 0 ms
粘贴包含空格的7817个字符的文本时的输出:
...long text...
operation tooks 0 ms
在您的计算机上试用,我认为这是正常的效率。