QTextBrowser理论总结
- 1. 简述
- 2. 文档来源和内容
- 3. 导航
- 4. 用途
1. 简述
QTextBrowser 顾名思义其实就是一个文本阅读器,但是这个类类扩展了 QTextEdit 的只读模式功能,当然了 QTextEdit 其实也就是QTextBrowser 的父类。添加的功能主要是一些导航 navigation 功能,也即是类似浏览器的那种跳转,用户可以跟踪 超文本文档中的链接。这里的超文本主要是指 html 格式文件或者 markdown 格式文件。而且是支持打开 web 网络上的链接哈。
如果要用可编辑的富文本编辑器,就使用 QTextEdit。如果想要一个没有超文本导航的文本浏览器,就使用QTextEdit 的 Read-Only 模式即可,并使用QTextEdit::setReadOnly() 来禁用编辑。
如果只需要显示一小段富文本信息的话,就使用 QLabel。
2. 文档来源和内容
QTextBrowser 可以使用 QTextEdit 的设置内容 setHtml() 或 setPlainText() 方法进行设置,但 QTextBrowser 也实现了 setSource() 函数,可以使用带路径的命名文档作为源文本。在使用的时候可以用相对文件路径或者绝对文件路径。
如果文档名称以 定位锚点结尾(例如在 html 文件中,“#anchor”,这个就是标记这个定位锚点在文件的位置),文本浏览器会自动滚动到该位置,我们也可以手动设置滚动到某个位置(使用 scrollToAnchor() )方法。当用户单击超链接时,QTextBrowser 将使用链接的 href 值作为参数调用 setSource() 本身。这样可以通过连接到 sourceChanged() 信号来跟踪当前源文件名。
在markdown格式文件中,这个使用的超链接 方法是 [占位字] (链接)
就像下面:
[1.md](./1.md)
在打开外部的 http链接是可以的,把 setOpenExternalLinks(bool) 设置为 true 就可以,但是打开的话就是 用的 系统默认浏览器打开的,不是自己打开的
3. 导航
QTextBrowser提供了back() 和forward() 方法,可以使用它们来实现“后退”和“前进”按钮。home() 方法将会跳转为显示的第一个初始文档。功能就像 Qt Assistant 里面的功能一样。
当用户单击 定位锚点时,会发出 anchorClicked() 信号。这样会默认去跳转到定位的位置,但是如果我们想要覆盖浏览器的默认导航行为,用 setSource() 函数在连接到 anchorClicked() 信号的槽函数里面中提供新的文档源、或者在槽函数中重新定义自己的功能。
如果要加载存储在 Qt resource system 中的文档,请使用qrc文件中的URL行加载,也即是要加一个前缀。
例如:
对于文档资源路径 :/docs/index.html 使用 qrc:/docs/index.html 作为 setSource() 的 URL。
4. 用途
QTextBrowser 其实就是一个封装的非常好的离线版文本查看器,主要还是 用 html 文档多些,用的md文档也多,一般我把这个当成帮助文档浏览器控件用。主要就是离线查看的功能。我们把本地的html文档写好,把 home一设置好,其实就已经完成了所有功能。
其实你看 Qt Assistant 的内容其实就是用 QTextBrowser 来显示的