QTextBrowser 类
The QTextBrowser class provides a rich text browser with hypertext navigation. 更多...
头文件 | #include <QTextBrowser> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake | QT += widgets |
继承 | QTextEdit |
- 所有成员列表,包括继承的成员
- QTextBrowser 是 富文本处理 API 的一部分。
属性
|
|
公共函数
QTextBrowser(QWidget *parent = nullptr) | |
int | backwardHistoryCount() const |
void | clearHistory() |
int | forwardHistoryCount() const |
QString | historyTitle(int i) const |
QUrl | historyUrl(int i) const |
bool | isBackwardAvailable() const |
bool | isForwardAvailable() const |
bool | openExternalLinks() const |
bool | openLinks() const |
QStringList | searchPaths() const |
void | setOpenExternalLinks(bool open) |
void | setOpenLinks(bool open) |
void | setSearchPaths(const QStringList &paths) |
QUrl | source() const |
QTextDocument::ResourceType | sourceType() const |
重写的公共函数
virtual QVariant | loadResource(int type, const QUrl &name) override |
公共槽
virtual void | backward() |
virtual void | forward() |
virtual void | home() |
virtual void | reload() |
void | setSource(const QUrl &url, QTextDocument::ResourceType type = QTextDocument::UnknownResource) |
信号
void | anchorClicked(const QUrl &link) |
void | backwardAvailable(bool available) |
void | forwardAvailable(bool available) |
void | highlighted(const QUrl &link) |
void | 历史变化() |
void | sourceChanged(const QUrl &src) |
受保护的函数
virtual void | doSetSource(const QUrl &url, QTextDocument::ResourceType type = QTextDocument::UnknownResource) |
重实现的受保护函数
virtual bool | event(QEvent *e) override |
virtual bool | focusNextPrevChild(bool next) override |
virtual void | focusOutEvent(QFocusEvent *ev) override |
virtual void | keyPressEvent(QKeyEvent *ev) override |
virtual void | mouseMoveEvent(QMouseEvent *e) override |
virtual void | mousePressEvent(QMouseEvent *e) override |
virtual void | mouseReleaseEvent(QMouseEvent *e) override |
virtual void | paintEvent(QPaintEvent *e) override |
详细描述
此类扩展了 QTextEdit(仅以只读模式),并添加了一些导航功能,使用户能够在超文本文档中跟踪链接。
如果您想为用户提供可编辑的富文本编辑器,请使用 QTextEdit。如果您需要一个不带超文本文档导航功能的文本浏览器,请使用 QTextEdit,并使用 QTextEdit::setReadOnly() 禁用编辑。如果您只需要显示一小块富文本,请使用 QLabel。
文档源和内容
QTextEdit 的内容通过 setHtml() 或 setPlainText() 设置,但 QTextBrowser 也实现了 setSource() 函数,使其可以设置为命名文档作为源文本。该名称将在搜索路径列表和当前文档工厂目录中查找。
如果文档名称以锚点结束(例如,“#anchor"
”),文本浏览器会自动滚动到该位置(使用 scrollToAnchor())。当用户单击超链接时,浏览器会以链接的 href
值作为参数调用自身的 setSource() 函数。您可以通过连接到 sourceChanged() 信号来跟踪当前源。
导航
QTextBrowser 提供了 backward() 和 forward() 插槽,您可以使用它们来实现前进和后退按钮。当用户单击锚点时,会发出 anchorClicked() 信号。要覆盖浏览器的默认导航行为,请在一个连接到此信号的插槽中调用 setSource() 函数,以提供新的文档文本。
如果要从 Qt 资源系统中加载文档,请使用 qrc
作为 URL 的方案来加载。例如,对于文档资源路径 :/docs/index.html
,使用 qrc:/docs/index.html
作为带有 setSource() 的 URL。
另请参阅 QTextEdit 和 QTextDocument。
属性文档
[只读]
modified : const bool
该属性确定文本浏览器的内 容是否已经过修改
openExternalLinks : bool
指定是否使用 QTextBrowser 自动使用 QDesktopServices::openUrl() 打开指向外部源的超链接,而不是发出 anchorClicked 信号。如果超链接的方案既不是文件也不是 qrc,则认为它是外部的。
默认值为 false。
访问函数
bool | openExternalLinks() const |
void | setOpenExternalLinks(bool open) |
openLinks : bool
该属性确定 QTextBrowser 是否应自动打开用户通过鼠标或键盘尝试激活的链接。
不管该属性的值如何,总是发出 anchorClicked 信号。
默认值为 true。
访问函数
bool | openLinks() const |
void | setOpenLinks(bool open) |
readOnly : const bool
该属性确定文本浏览器是否为只读
默认情况下,该属性为 true
。
searchPaths : QStringList
该属性保存文本浏览器用来查找支持内容的搜索路径
QTextBrowser 使用此列表来查找图像和文档。
默认情况下,此属性包含一个空的字符串列表。
访问函数
QStringList | searchPaths() const |
void | setSearchPaths(const QStringList &paths) |
source : QUrl
该属性保存所显示文档的名称。
如果没有显示文档或来源未知,则为无效 URL。
设置此属性时,QTextBrowser 将在 searchPaths 属性的路径和当前来源的目录中查找指定名称的文档,除非值是绝对文件路径。它还会检查可选的锚点和相应地滚动文档
如果文档中的第一个标签是 <qt type=detail>
,则文档将作为弹出窗口显示,而不是在新文档中显示在浏览器窗口本身中。否则,文档以正常的方式在文本浏览器中显示,文本设置为具有 QTextDocument::setHtml() 或 QTextDocument::setMarkdown 的命名文档的内容,具体取决于文件名是否以已知的 Markdown 文件扩展名结尾。
如果您想避免自动类型检测并显式指定类型,请调用setSource(),而不是设置此属性。
默认情况下,此属性包含一个空URL。
访问函数
QUrl | source() const |
void | setSource(const QUrl &url, QTextDocument::ResourceType type = QTextDocument::UnknownResource) |
[只读]
sourceType : const QTextDocument::ResourceType
此属性保留显示文档的类型
如果未显示文档或未知源类型,则为QTextDocument::UnknownResource。否则,它保留检测到的类型,或setSource() 调用时所指定的类型。
访问函数
QTextDocument::ResourceType | sourceType() const |
undoRedoEnabled : const bool
此属性保留文本浏览器是否支持撤销/重做操作
默认情况下,此属性为false
。
成员函数文档
[显式]
QTextBrowser::QTextBrowser(QWidget *parent = nullptr)
使用父元素parent构建一个空的QTextBrowser。
[信号]
void QTextBrowser::anchorClicked(const QUrl &link)
当用户点击锚点时发出此信号。通过锚点引用的URL传递给link。
请注意,除非将openLinks属性设置为false或您在连接的槽中调用setSource(),否则浏览器将自动处理link指定的位置导航。此机制用于覆盖浏览器的默认导航功能。
[虚拟槽]
void QTextBrowser::backward()
将显示的文档更改为列表中通过链接导航构建的文档列表的上一文档。如果没有上一文档,则不执行任何操作。
另请参阅forward() 和 backwardAvailable()。
[信号]
void QTextBrowser::backwardAvailable(bool available)
当backward()的可用性更改时发出此信号。available在用户处于主页时为false;否则为true。
int QTextBrowser::backwardHistoryCount() const
返回历史记录中的后退次数。
void QTextBrowser::clearHistory()
清除访问过的文档历史记录并禁用前后导航。
[虚拟受保护的]
void QTextBrowser::doSetSource(const QUrl &url, QTextDocument::ResourceType type = QTextDocument::UnknownResource)
尝试加载给定 url 的文档,并指定 type。
setSource() 调用 doSetSource。在 Qt 5 中,setSource(const QUrl &url) 是虚拟的。在 Qt 6 中,doSetSource() 是虚拟的,这样就可以在子类中重写。
[重写虚拟受保护的]
bool QTextBrowser::event(QEvent *e)
重新实现: QAbstractScrollArea::event(QEvent *event)。
[重写虚拟受保护的]
bool QTextBrowser::focusNextPrevChild(bool next)
重新实现: QTextEdit::focusNextPrevChild(bool next)。
[重写虚拟受保护的]
void QTextBrowser::focusOutEvent(QFocusEvent *ev)
重新实现: QTextEdit::focusOutEvent(QFocusEvent *e)。
[虚拟槽]
void QTextBrowser::forward()
将显示的文档更改为列表中下一个文档。如果没有下一个文档,则不执行任何操作。
另请参阅backward() 和 forwardAvailable。
[信号]
void QTextBrowser::forwardAvailable(bool available)
当 forward() 的可用性发生变化时发出此信号。在用户导航 backward() 后,available 为 true,当用户导航或转向 forward() 时为 false。
int QTextBrowser::forwardHistoryCount() const
返回历史记录中的前向位置数量。
[信号]
void QTextBrowser::highlighted(const QUrl &link)
当用户已选中但未激活文档中的锚点时发出此信号。锚点引用的 URL 通过 link 传递。
[信号]
void QTextBrowser::historyChanged()
当历史记录更改时发出此信号。
另请参阅historyTitle() 和 historyUrl。
QString QTextBrowser::historyTitle(int i) const
返回历史记录项的 documentTitle()。
输入 | 返回 |
---|---|
i < 0 | backward() 历史 |
i == 0 | 当前,参见 QTextBrowser::source() |
i > 0 | forward() 历史 |
backaction.setToolTip(browser.historyTitle(-1)); forwardaction.setToolTip(browser.historyTitle(+1));
QUrl QTextBrowser::historyUrl(int i) const
获取历史项的URL。
输入 | 返回 |
---|---|
i < 0 | backward() 历史 |
i == 0 | 当前,参见 QTextBrowser::source() |
i > 0 | forward() 历史 |
[虚拟槽]
void QTextBrowser::home()
将显示的文档修改为历史中的第一个文档。
bool QTextBrowser::isBackwardAvailable() const
如果文本浏览器可以通过backward()在文档历史中向后导航,则返回true
。
另请参阅 backwardAvailable() 和 backward。
bool QTextBrowser::isForwardAvailable() const
如果文本浏览器可以通过forward()在文档历史中向前导航,则返回true
。
另请参阅 forwardAvailable() 和 forward。
[重写虚拟受保护的]
void QTextBrowser::keyPressEvent(QKeyEvent *ev)
重新实现: QTextEdit::keyPressEvent(QKeyEvent *e)。
事件 ev 用于提供以下键盘快捷方式
[重写虚拟受保护的]
QVariant QTextBrowser::loadResource(int type, const QUrl &name)
重新实现: QTextEdit::loadResource(int type, const QUrl &name)。
当文档加载以及文档中的每个图像加载时,都会调用此函数。如果无法加载资源,则返回一个无效的 QVariant。
默认实现忽略 type 并尝试通过解释 name 作为文件名来定位资源。如果它不是绝对路径,则尝试在 searchPaths 属性的路径以及当前源相同的目录中查找文件。成功时,结果是一个存储文件内容的 QVariant。
如果您重写此函数,可以返回其他 QVariant 类型。下表显示了根据资源类型支持哪些变体类型
[重写虚拟受保护的]
void QTextBrowser::mouseMoveEvent(QMouseEvent *e)
重新实现: QTextEdit::mouseMoveEvent(QMouseEvent *e)。
[重写虚拟受保护的]
void QTextBrowser::mousePressEvent(QMouseEvent *e)
重新实现: QTextEdit::mousePressEvent(QMouseEvent *e)。
[重写虚拟受保护]
void QTextBrowser::mouseReleaseEvent(QMouseEvent *e)
重写: QTextEdit::mouseReleaseEvent(QMouseEvent *e).
[重写虚拟受保护]
void QTextBrowser::paintEvent(QPaintEvent *e)
重写: QTextEdit::paintEvent(QPaintEvent *event).
[虚拟槽]
void QTextBrowser::reload()
重新加载当前源。
[槽]
void QTextBrowser::setSource(const QUrl &url, QTextDocument::ResourceType type = QTextDocument::UnknownResource)
尝试加载给定 url 的文档,并指定 type。
如果 type 是 UnknownResource (默认),则将检测文档类型:也就是说,如果 url 以扩展名 .md
,.mkd
或 .markdown
结尾,将通过 QTextDocument::setMarkdown() 加载文档;否则,将通过 QTextDocument::setHtml() 加载。可以通过显式指定 type 来绕过此检测。
注意:属性 source 的设置函数。
另请参阅:source()。
[信号]
void QTextBrowser::sourceChanged(const QUrl &src)
当源已更改时发出此信号,src 是新源。
源更改发生在通过调用 setSource(),forward(),backward()或 home()进行程序调用时,或在用户点击链接或按等效键序列时。
© 2024 The Qt Company Ltd. 本文档中包含的文档贡献的版权归其各自的拥有者所有。本文档根据由自由软件基金会发布的 GNU 自由文档许可版 1.3 的条款进行许可。Qt 及其相关标志是 The Qt Company Ltd. 在芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。