使用 Qt,我正在开发一个在QGraphicsScene
. 项目既是多边形又是QGraphicsTextItems
. 后者可以包含超链接。
问题:我正在尝试导出图表,并且希望保持超链接处于活动状态。
使用QImage
渲染器可以生成漂亮的 PNG,但(显然)没有超链接。
QSvgRenderer
生成也不嵌入超链接的 SVG。
QPrinter
允许生成完成这项工作的 PDF(或多或少) - 超链接是可点击的,这就是我原则上需要的。除了我想在网络上发布图表,所以 PDF 对我来说并不是一个真正的选择。
我找不到任何方法QGraphicsScene
以 HTML 表单呈现。我错过了什么?有没有办法做到这一点?
谢谢
编辑
代码示例:
from PySide import QtGui, QtCore
app = QtGui.QApplication([])
scene = QtGui.QGraphicsScene()
view = QtGui.QGraphicsView(scene)
item = QtGui.QGraphicsTextItem()
item.setOpenExternalLinks(True)
item.setHtml('<a href="http://stackoverflow.com">Hello</a>')
item.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse)
scene.addItem(item)
view.show()
app.exec_()
此示例显示带有可单击超链接的场景(打开默认系统应用程序的链接)。在我的应用程序中,场景还包含一些图形项目,但我认为这足以理解:我希望在 HTML 中呈现(或打印或导出)这个场景,以便链接保持可点击状态。
以下代码将导出为 PDF:
pdf_printer = QPrinter()
pdf_printer.setOutputFormat(QPrinter.PdfFormat)
pdf_printer.setPaperSize(rect.size().toSize(), QPrinter.Point)
pdf_printer.setFullPage(True)
pdf_printer.setOutputFileName(filename)
pdf_painter = QPainter()
pdf_painter.begin(pdf_printer)
scene.render(pdf_painter, source=rect)
pdf_painter.end()
生成的 PDF 确实包含活动的超链接 - 这就是让我认为所有机制都在那里的原因。我只是找不到导出 HTML 而不是 PDF 的方法。