首页 文章

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

提问于
浏览
4

我一直在寻找一天,但没有找到答案 . 此线程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 回答

  • 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();
    

相关问题