• 11566阅读
  • 5回复

运行PDF阅读器时出错 请教高手 [复制链接]

上一主题 下一主题
离线圆融一笑
 
只看楼主 倒序阅读 楼主  发表于: 2007-10-31
— 本帖被 XChinux 执行加亮操作(2008-07-18) —
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
离线圆融一笑
只看该作者 1楼 发表于: 2007-10-31
Pdfviewer::Pdfviewer( QWidget * parent)
    : QTextBrowser(parent)
{
    m_document = NULL;
    m_currentPage = 0;
}
bool Pdfviewer::OpenDocument(QString filename)
{
    // TODO
    if(filename.isEmpty())
        return false;

    if(m_document)
        delete m_document;

    m_document = Poppler::Document::load(filename);
    if (!m_document || m_document->isLocked()) {
        // ... error message ....
        qDebug()<<"Cannot open file"<<filename;
        if(m_document){
            delete m_document;
            m_document = NULL;
        }
        return false;
    }

    m_currentPage = -1;
    showpage(0);

    return true;
}

void Pdfviewer::showpage(int npage)
{
    // Paranoid safety check
    if (m_document == NULL)
        return;

    if(m_currentPage != npage){
        m_currentPage = npage;
        update();
    }

}
void Pdfviewer::paintEvent(QPaintEvent *)
{
    QPainter painter(this);

    // Paranoid safety check
    if(!m_document)
        return;

    // Access page of the PDF file
    Poppler::Page* pdfPage = m_document->page(m_currentPage);  // Document starts at page 0
    if (!pdfPage) {
        return;
    }
   
    // Generate a QImage of the rendered page
    QImage image = pdfPage->renderToImage();
    if (image.isNull()) {
        qDebug()<<"pdf file renderToImage error";
        return;
    }

    // ... use image ...
    painter.drawImage(0,0, image);

    // after the usage, the page must be deleted
    delete pdfPage;
}


......
离线圆融一笑
只看该作者 2楼 发表于: 2007-11-05
做放大时又出这个错
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::setWorldTransform: Painter not active

void Mainframe::zoomIn()
{
    QPainter painter(this);
    QMatrix matrix;
    matrix.scale(2,2);
    painter.setWorldMatrix(matrix, true);
    //scaleImage(1.25);
}
离线justlook
只看该作者 3楼 发表于: 2008-11-05
你的这个PDF阅读器是什么阅读器?有QT的源码吗
离线ychwn

只看该作者 4楼 发表于: 2009-12-14
我把之前在Qt3上面写的程序跑在Qt4上面时遇到了同样的问题:

QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
离线imtoby

只看该作者 5楼 发表于: 2013-04-24
快速回复
限100 字节
 
上一个 下一个