将QWebElement渲染到QWidget会导致我的应用程序崩溃

时间:2011-06-02 18:51:23

标签: qt qt4 qtwebkit

我正在尝试将QWebElement渲染到QWidget中但我的应用程序崩溃了,但是如果我将它渲染到QImage中,一切都很好。

这是我的代码:

// using this code my application is crashing
void ImageWidget::paintEvent(QPaintEvent *)
{
    if (this->imgElement != NULL)
    {
        QPainter p(this);
        this->imgElement->render(&p);
        p.end();
    }
}

// using this one everything works OK
void ImageWidget::saveImage(QWebElement *el)
{
    this->imgElement = el;
    QImage m_image = QImage(290, 80, QImage::Format_ARGB32_Premultiplied);
    m_image.fill(Qt::transparent);
    QPainter p(&m_image);
    el->render(&p);
    p.end();
    m_image.save("some_file.png", "png");
    this->update();
}

我在Win 7(x64)上使用Qt 4.7.3。让我知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

我不建议在paint事件上渲染webelemnt。可以经常触发绘制事件,或者只需要在窗口小部件上绘制微小的矩形。

最好拥有图像缓冲区并在网页元素更改时更新它。

至少你可以尝试写“render(painter,paintEvent-> rect());”