Я предполагаю, что вам действительно не нужно QGraphicsWebView
и что достаточно QWebView
.
Важно помнить, что вы не должны звонить QWidget::paintEvent()
самостоятельно. Учитывая это ограничение, вы захотите использовать вспомогательный класс, который может отображаться на устройстве рисования или визуализироваться с использованием данного художника. QWebFrame имеет один такой метод в виде функции визуализации . Исходя из вашего примера с ссылками, должно работать следующее:
class HTMLDelegate(QStyledItemDelegate):
def paint(self, painter, option, index):
model = index.model()
record = model.listdata[index.row()]
# don't instantiate every time, so move this out
# to the class level
web = QWebView()
web.setHtml(record)
web.page().viewportSize().setWidth(option.rect.width())
painter.save()
painter.translate(option.rect.topLeft());
painter.setClipRect(option.rect.translated(-option.rect.topLeft()))
web.page().mainFrame().render(painter)
painter.restore()