所以我有一个QTextEdit,我在其中放了一些html超链接到本地​​文件,如下所示:

<a href="file:\\path\\to\\myfile">link</a>


当我启动我的应用程序时,Qt将我的链接显示为蓝色,但是它没有显示小手,我无法单击它。

在向我扔石头之前:


我检查了我的文件是否确实存在
我尝试改用QTextBrowser,但手却出现了,但是当我单击它时,光标旋转了很长时间,并且应用程序最终在QTextBrowser中打开了文件二进制文件
我设置了交互标志self.workflow_log_textedit.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByKeyboard|QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextBrowserInteraction|QtCore.Qt.TextEditable|QtCore.Qt.TextEditorInteraction|QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse)
我尝试在“文件”和类似<a href="file:///\\path\\to\\myfile">link</a>的路径之间放置3个斜杠,当我单击它时,这会清除我的QTextBrowser
我尝试在超链接中添加type="image"target="_blank",结果相同


我想指出的是,使用http链接无法更好地工作

编辑:
MCVE根据要求:

#!/usr/bin/python

from PyQt4 import QtGui, QtCore

import sys

class MyMainWindow(QtGui.QMainWindow):

    def __init__(self, parent=None):

        super(MyMainWindow, self).__init__(parent)
        self.tb = QtGui.QTextBrowser()
        self.tb.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByKeyboard|QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextBrowserInteraction|QtCore.Qt.TextEditable|QtCore.Qt.TextEditorInteraction|QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse)
        self.tb.setHtml('<a target="_blank" href="file:///{path}">{path}</a>'.format(path='C:\Users\johndoe\Pictures\doge.png'))
        self.setCentralWidget(self.tb)

app = QtGui.QApplication([])
foo = MyMainWindow()
foo.show()
sys.exit(app.exec_())

最佳答案

如果将url设置为html文档,则示例可以正常工作。但是,如果将其设置为图像文件,它将无法正常工作,出于同样的原因,如果您尝试在文本编辑器中打开图像文件,则不会。 QTextEditQTextBrowser类可以处理纯文本,再加上limited subset of HTML4-仅此而已。

当然,您可以使用<img>标记在html文档中显示图像。因此,类似以下内容的方法应该起作用:

self.tb.setHtml('<img src="image.png" />')


图片超链接的:

self.tb.setHtml('<a href="doc.html"><img src="image.png" /></a>')

10-08 05:37