【问题标题】:Getting only the visible text from a QTextEdit widget仅从 QTextEdit 小部件中获取可见文本
【发布时间】:2014-02-01 03:23:42
【问题描述】:

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

【问题讨论】:

  • 使用 QScrollarea 类

标签: c++ qt qtextedit


【解决方案1】:

你可以使用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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 2021-03-24
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    相关资源
    最近更新 更多