Qt получить текст изменен

0

Хорошо, поэтому у нас есть метод частного слова textChanged, который уведомляет нас об изменении объекта textEdit. Эта реализация довольно надежна и сообщает нам, когда текст вставлен с клавиатурой, с копией и вставкой, и многое другое.

Однако есть ли какой-либо текст, который был изменен?

  • 0
    textEdit.toPlainText() , возможно? Я не уверен, что понимаю природу трудности.
  • 0
    Возможно, вы ищете QTextEdit::document() и объект QTextDocument . Последний испускает сигналы с более подробной информацией об изменении.
Показать ещё 1 комментарий
Теги:
qt
qtextedit

1 ответ

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 

Попробуйте на своем компьютере, я думаю, что это нормальная эффективность.

  • 0
    это выглядит потрясающе, очень похоже на то, что я нашел в документах. Ты хоть представляешь, как быстро это обновляется?
  • 0
    @PaulBae посмотрите мои изменения, пожалуйста.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню