所以我有一个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文档,则示例可以正常工作。但是,如果将其设置为图像文件,它将无法正常工作,出于同样的原因,如果您尝试在文本编辑器中打开图像文件,则不会。 QTextEdit
和QTextBrowser
类可以处理纯文本,再加上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>')