Qt改变了文字

时间:2014-09-13 01:21:31

标签: c++ qt qtextedit

好吧,我们有私有槽方法textChanged,它在修改textEdit对象时通知我们。这个实现是相当健壮的,并告诉我们何时用键盘插入文本,复制和粘贴,以及其他大部分内容。

但是,有没有获得更改的实际文本?

1 个答案:

答案 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 

在您的计算机上试用,我认为这是正常的效率。