仅从QTextEdit小部件获取可见文本

Raj*_*Raj 4 c++ qt qtextedit

我一直在寻找一天,但没有找到答案.此主题如何从QTextEdit或QPlainTextEdit小部件获取当前可见的文本?仅回答如何获取小部件中包含的所有文本.

在我的情况下,我有一个带有大量文本的QTextWidget.远远超过任何时候都可以展示的.我想回应可见文本的变化,然后采取一些行动.

当用户滚动文本区域或将新文本添加到窗口小部件时,我想对可见文本执行一些操作.我可以轻松连接到QTextEdit :: verticalScrollBar()的信号但是如何查找可见文本是什么?

到目前为止我有这个,但在阅读了文档的页面和页面后,似乎QTextEdit没有任何方法让你知道它的可见区域中的文本是什么.

 void MyProject::on_textEdit_scrollBar_valueChanged(int value)
 {
    QStringList visibleText = // how do I do this?
 }
Run Code Online (Sandbox Code Playgroud)

Pav*_*hov 7

你可以使用QTextEdit::cursorForPosition:

QTextEdit textEdit;
//...
QTextCursor cursor = textEdit.cursorForPosition(QPoint(0, 0));
QPoint bottom_right(textEdit.viewport()->width() - 1, textEdit.viewport()->height() - 1);
int end_pos = textEdit.cursorForPosition(bottom_right).position();
cursor.setPosition(end_pos, QTextCursor::KeepAnchor);
qDebug() << cursor.selectedText();
Run Code Online (Sandbox Code Playgroud)