From 2cf4bb16c66050496cbdd2dcd3aa62c0a339a1f3 Mon Sep 17 00:00:00 2001 From: Tobias Koenig Date: Tue, 21 Feb 2017 12:50:56 +0100 Subject: Add bookmarks view to pdfviewer example Add a treeview to the pdfviewer example to show the usage of QPdfBookmarkModel Change-Id: Ia93d868655a74ea6c41bb28945fe16d0cc740410 Reviewed-by: Simon Hausmann --- examples/pdfwidgets/pdfviewer/mainwindow.cpp | 18 ++++ examples/pdfwidgets/pdfviewer/mainwindow.h | 1 + examples/pdfwidgets/pdfviewer/mainwindow.ui | 122 ++++++++++++++++++++++----- 3 files changed, 121 insertions(+), 20 deletions(-) diff --git a/examples/pdfwidgets/pdfviewer/mainwindow.cpp b/examples/pdfwidgets/pdfviewer/mainwindow.cpp index 8ef7a075e..fd2656305 100644 --- a/examples/pdfwidgets/pdfviewer/mainwindow.cpp +++ b/examples/pdfwidgets/pdfviewer/mainwindow.cpp @@ -42,6 +42,7 @@ #include #include #include +#include #include #include #include @@ -75,6 +76,14 @@ MainWindow::MainWindow(QWidget *parent) QScroller::grabGesture(ui->scrollArea); + QPdfBookmarkModel *bookmarkModel = new QPdfBookmarkModel(this); + bookmarkModel->setDocument(m_document); + + ui->bookmarkView->setModel(bookmarkModel); + connect(ui->bookmarkView, SIGNAL(activated(QModelIndex)), this, SLOT(bookmarkSelected(QModelIndex))); + + ui->tabWidget->setTabEnabled(1, false); // disable 'Pages' tab for now + m_pageWidget->setDocument(m_document); } @@ -120,6 +129,15 @@ void MainWindow::zoomEdited() m_pageWidget->setZoom(factor / 100.); } +void MainWindow::bookmarkSelected(const QModelIndex &index) +{ + if (!index.isValid()) + return; + + const int page = index.data(QPdfBookmarkModel::PageNumberRole).toInt(); + ui->scrollArea->ensureVisible(0, m_pageWidget->yForPage(page)); +} + void MainWindow::on_actionOpen_triggered() { QUrl toOpen = QFileDialog::getOpenFileUrl(this, tr("Choose a PDF"), QUrl(), "Portable Documents (*.pdf)"); diff --git a/examples/pdfwidgets/pdfviewer/mainwindow.h b/examples/pdfwidgets/pdfviewer/mainwindow.h index dedc81267..40062a31d 100644 --- a/examples/pdfwidgets/pdfviewer/mainwindow.h +++ b/examples/pdfwidgets/pdfviewer/mainwindow.h @@ -65,6 +65,7 @@ private slots: void showingPageRange(int start, int end); void zoomChanged(qreal factor); void zoomEdited(); + void bookmarkSelected(const QModelIndex &index); // action handlers void on_actionOpen_triggered(); diff --git a/examples/pdfwidgets/pdfviewer/mainwindow.ui b/examples/pdfwidgets/pdfviewer/mainwindow.ui index 251591d9a..738cef48d 100644 --- a/examples/pdfwidgets/pdfviewer/mainwindow.ui +++ b/examples/pdfwidgets/pdfviewer/mainwindow.ui @@ -34,27 +34,109 @@ 0 - - - QFrame::NoFrame - - - 0 - - - true - - - - - 0 - 0 - 700 - 517 - + + + + 0 - - + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + + 0 + 0 + + + + QTabWidget::West + + + 0 + + + false + + + + Bookmarks + + + + 0 + + + 2 + + + 2 + + + 2 + + + 2 + + + + + + 0 + 0 + + + + true + + + + + + + + Pages + + + + + + + 10 + 0 + + + + true + + + + + 0 + 0 + 401 + 515 + + + + + + + -- cgit v1.2.3