diff options
Diffstat (limited to 'examples/widgets/pdfviewer/sequentialpagewidget.cpp')
-rw-r--r-- | examples/widgets/pdfviewer/sequentialpagewidget.cpp | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/examples/widgets/pdfviewer/sequentialpagewidget.cpp b/examples/widgets/pdfviewer/sequentialpagewidget.cpp index f02290a0a..b0dcb1e19 100644 --- a/examples/widgets/pdfviewer/sequentialpagewidget.cpp +++ b/examples/widgets/pdfviewer/sequentialpagewidget.cpp @@ -42,6 +42,7 @@ SequentialPageWidget::SequentialPageWidget(QWidget *parent) , m_topPageShowing(0) , m_zoom(1.) , m_screenResolution(QGuiApplication::primaryScreen()->logicalDotsPerInch() / 72.0) + , m_document(nullptr) { connect(m_pageRenderer, SIGNAL(pageReady(int, qreal, QImage)), this, SLOT(pageLoaded(int, qreal, QImage)), Qt::QueuedConnection); grabGesture(Qt::SwipeGesture); @@ -52,11 +53,14 @@ SequentialPageWidget::~SequentialPageWidget() delete m_pageRenderer; } -void SequentialPageWidget::openDocument(const QUrl &url) +void SequentialPageWidget::setDocument(QPdfDocument *document) { - m_pageSizes = m_pageRenderer->openDocument(url); - m_topPageShowing = 0; - invalidate(); + m_pageRenderer->setDocument(document); + + m_document = document; + connect(m_document, &QPdfDocument::statusChanged, this, &SequentialPageWidget::documentStatusChanged); + + documentStatusChanged(); } void SequentialPageWidget::setZoom(qreal factor) @@ -90,6 +94,19 @@ void SequentialPageWidget::invalidate() update(); } +void SequentialPageWidget::documentStatusChanged() +{ + m_pageSizes.clear(); + m_topPageShowing = 0; + + if (m_document->status() == QPdfDocument::Ready) { + for (int page = 0; page < m_document->pageCount(); ++page) + m_pageSizes.append(m_document->pageSize(page)); + } + + invalidate(); +} + void SequentialPageWidget::pageLoaded(int page, qreal zoom, QImage image) { Q_UNUSED(zoom) |