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

时间:2014-02-01 03:23:42

标签: c++ qt qtextedit

我一直在寻找一天而没有找到答案。 这个帖子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?
 }

1 个答案:

答案 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();