使用QWebFrame将HTML渲染为QImage / QPicture

时间:2014-03-16 14:34:42

标签: qt qt5 qtwebkit qwebpage

我试图在没有QWebView的情况下使用QWebPage / QWebFrame将html数据呈现给qimage或qpicture:

#include <QtWebKitWidgets>

auto htmlData = R"(
<!DOCTYPE html>
<html>
<body>
<p>A quick brown fox jumps over the lazy dog.</p>
</body>
</html>
)";

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWebPage page;
    auto frame = page.mainFrame();
    frame->setContent(htmlData, "text/html");

    QImage img(500, 500, QImage::Format_ARGB32);
    QPainter p(&img);
    frame->render(&p);
    p.end();
    img.save("html.png");

    return 0;
}

结果图片为空白。 QWebFrame :: print确实生成了正确的PDF文件。

我需要做些什么才能正确渲染html?

1 个答案:

答案 0 :(得分:2)

行。我终于搞清楚了。我需要致电QWebPage::setViewportSize()。我想如果页面是QWebView的一部分,它会自动设置。