我一直在寻找一天而没有找到答案。 这个帖子How do I get the currently visible text from a QTextEdit or QPlainTextEdit widget?只是回答如何获取小部件中包含的所有文本。
在我的情况下,我有一个带有大量文本的QTextWidget。远远超过任何时候都可以展示的。我想回应可见文本的变化,然后采取一些行动。
当用户滚动文本区域或将新文本添加到窗口小部件时,我想对可见文本执行一些操作。我可以轻松连接到QTextEdit :: verticalScrollBar()的信号但是如何查找可见文本是什么?
到目前为止我有这个但是在阅读了文档的页面和页面之后,似乎QTextEdit没有任何方法可以让你知道它的可见区域中的文本是什么。
void MyProject::on_textEdit_scrollBar_valueChanged(int value)
{
QStringList visibleText = // how do I do this?
}
答案 0 :(得分: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();