Как использовать QGraphicsWebView? - PullRequest
1 голос
/ 29 июня 2010

Я хочу использовать QGraphicWebView внутри делегата для визуализации ячейки QTableView, но я просто не знаю, что делать с параметром QStyleOptionGraphicsItem, который требуется методу paint ().Как его собрать / где мне его найти?Я использую этот код в качестве ссылки, поэтому метод paint () должен выглядеть примерно так:

def paint(self, painter, option, index):
    web = QGraphicsWebView()
    web.setHtml(some_html_text)
    web.page().viewportSize().setWidth(option.rect.width())
    painter.save()
    painter.translate(option.rect.topLeft());
    painter.setClipRect(option.rect.translated(-option.rect.topLeft()))
    web.paint(painter, ??????) # what here?
    painter.restore()

Любой совет?

1 Ответ

0 голосов
/ 29 июня 2010

Я предполагаю, что вам действительно не нужно 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...