QTextBrowser 类

The QTextBrowser class provides a rich text browser with hypertext navigation. 更多...

头文件 #include <QTextBrowser>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承 QTextEdit

属性

公共函数

QTextBrowser(QWidget *parent = nullptr)
intbackwardHistoryCount() const
voidclearHistory()
intforwardHistoryCount() const
QStringhistoryTitle(int i) const
QUrlhistoryUrl(int i) const
boolisBackwardAvailable() const
boolisForwardAvailable() const
boolopenExternalLinks() const
boolopenLinks() const
QStringListsearchPaths() const
voidsetOpenExternalLinks(bool open)
voidsetOpenLinks(bool open)
voidsetSearchPaths(const QStringList &paths)
QUrlsource() const
QTextDocument::ResourceTypesourceType() const

重写的公共函数

virtual QVariantloadResource(int type, const QUrl &name) override

公共槽

virtual voidbackward()
virtual voidforward()
virtual voidhome()
virtual voidreload()
voidsetSource(const QUrl &url, QTextDocument::ResourceType type = QTextDocument::UnknownResource)

信号

voidanchorClicked(const QUrl &link)
voidbackwardAvailable(bool available)
voidforwardAvailable(bool available)
voidhighlighted(const QUrl &link)
void历史变化()
voidsourceChanged(const QUrl &src)

受保护的函数

virtual voiddoSetSource(const QUrl &url, QTextDocument::ResourceType type = QTextDocument::UnknownResource)

重实现的受保护函数

virtual boolevent(QEvent *e) override
virtual boolfocusNextPrevChild(bool next) override
virtual voidfocusOutEvent(QFocusEvent *ev) override
virtual voidkeyPressEvent(QKeyEvent *ev) override
virtual voidmouseMoveEvent(QMouseEvent *e) override
virtual voidmousePressEvent(QMouseEvent *e) override
virtual voidmouseReleaseEvent(QMouseEvent *e) override
virtual voidpaintEvent(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。

另请参阅 QTextEditQTextDocument

属性文档

[只读] modified : const bool

该属性确定文本浏览器的内 容是否已经过修改

指定是否使用 QTextBrowser 自动使用 QDesktopServices::openUrl() 打开指向外部源的超链接,而不是发出 anchorClicked 信号。如果超链接的方案既不是文件也不是 qrc,则认为它是外部的。

默认值为 false。

访问函数

boolopenExternalLinks() const
voidsetOpenExternalLinks(bool open)

该属性确定 QTextBrowser 是否应自动打开用户通过鼠标或键盘尝试激活的链接。

不管该属性的值如何,总是发出 anchorClicked 信号。

默认值为 true。

访问函数

boolopenLinks() const
voidsetOpenLinks(bool open)

readOnly : const bool

该属性确定文本浏览器是否为只读

默认情况下,该属性为 true

searchPaths : QStringList

该属性保存文本浏览器用来查找支持内容的搜索路径

QTextBrowser 使用此列表来查找图像和文档。

默认情况下,此属性包含一个空的字符串列表。

访问函数

QStringListsearchPaths() const
voidsetSearchPaths(const QStringList &paths)

source : QUrl

该属性保存所显示文档的名称。

如果没有显示文档或来源未知,则为无效 URL。

设置此属性时,QTextBrowser 将在 searchPaths 属性的路径和当前来源的目录中查找指定名称的文档,除非值是绝对文件路径。它还会检查可选的锚点和相应地滚动文档

如果文档中的第一个标签是 <qt type=detail>,则文档将作为弹出窗口显示,而不是在新文档中显示在浏览器窗口本身中。否则,文档以正常的方式在文本浏览器中显示,文本设置为具有 QTextDocument::setHtml() 或 QTextDocument::setMarkdown 的命名文档的内容,具体取决于文件名是否以已知的 Markdown 文件扩展名结尾。

如果您想避免自动类型检测并显式指定类型,请调用setSource(),而不是设置此属性。

默认情况下,此属性包含一个空URL。

访问函数

QUrlsource() const
voidsetSource(const QUrl &url, QTextDocument::ResourceType type = QTextDocument::UnknownResource)

[只读] sourceType : const QTextDocument::ResourceType

此属性保留显示文档的类型

如果未显示文档或未知源类型,则为QTextDocument::UnknownResource。否则,它保留检测到的类型,或setSource() 调用时所指定的类型。

访问函数

QTextDocument::ResourceTypesourceType() 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()

清除访问过的文档历史记录并禁用前后导航。

另请参阅backward() 和 forward()。

[虚拟受保护的] 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 < 0backward() 历史
i == 0当前,参见 QTextBrowser::source()
i > 0forward() 历史
backaction.setToolTip(browser.historyTitle(-1));
forwardaction.setToolTip(browser.historyTitle(+1));

QUrl QTextBrowser::historyUrl(int i) const

获取历史项的URL。

输入返回
i < 0backward() 历史
i == 0当前,参见 QTextBrowser::source()
i > 0forward() 历史

[虚拟槽] 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 用于提供以下键盘快捷方式

按键动作
Alt+左箭头backward()
Alt+右箭头forward()
Alt+上箭头home()

[重写虚拟受保护的] 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

如果 typeUnknownResource (默认),则将检测文档类型:也就是说,如果 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. 在芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。