2

我的一个应用程序中有一个不可编辑的 QTextEdit 小部件。基于我想显示附加信息的组合框的选择。

我目前的方法是从目录加载 HTML 文件并将它们显示在 QTextEdit-Field 中。这听起来很简单(使用 setHtml 或 insertHtml 函数),但不知何故并没有我想象的那么简单。我相信我必须先解析或加载文件。我该如何继续?

h = (helpdir + str + ".html") # contains the helpfiles path (Format QString)
# Load in HTML?
textfield.insertHtml(h) # Should somehow insert the html

欢迎其他易于实施的方法(尤其是考虑到帮助的未来翻译)。我赞成任何没有额外库或非基础包的解决方案。

4

2 回答 2

4

是的,您必须先加载 HTML 文件,然后再将其插入QTextEdit. 但这样做很容易:

    f = QFile("path/to/your/htmlfile")
    f.open(QFile.ReadOnly|QFile.Text)
    istream = QTextStream(f)
    textfield.setHtml(istream.readAll())
    f.close()

它工作得很好(假设您的 HTML 文件不是很大)。如果文件更符合您的需要,您也可以逐行读取文件。

于 2012-10-07T14:02:21.707 回答
1

您可以使用QtWebKit,这是在 qt 中处理 html 内容的最佳方式。它应该随您的 python qt 安装一起提供。查看下面的代码:

测试.py

import sys
from PyQt4 import QtCore, QtGui, QtWebKit

app = QtGui.QApplication(sys.argv)
view = QtWebKit.QWebView()
view.setHtml(open('test.html').read())
window = QtGui.QMainWindow()
window.setCentralWidget(view)
window.show()
sys.exit(app.exec_())

测试.html

<html><body><h1>test page</h1>testing...</body></html>
于 2012-10-07T13:29:33.377 回答