gpt4 book ai didi

c++ - Qt 获取文本更改

转载 作者:行者123 更新时间:2023-11-28 02:41:32 31 4
gpt4 key购买 nike

好的,我们有了私有(private)槽方法 textChanged当 textEdit 对象被修改时通知我们。此实现相当稳健,并会在使用键盘、复制和粘贴以及大多数其他操作插入文本时通知我们。

但是,无论如何,是否可以获取已更改的实际文本?

最佳答案

正如 Igor 所说,您可以使用 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

在你的电脑上试一下,我觉得效率一般。

关于c++ - Qt 获取文本更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25818938/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com