From f4bf49528e6e4254290697db233ec560bbef7ac2 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/pdf/pdfviewer/mainwindow.cpp | 18 +++++ examples/pdf/pdfviewer/mainwindow.h | 1 + examples/pdf/pdfviewer/mainwindow.ui | 122 ++++++++++++++++++++++++++++------ 3 files changed, 121 insertions(+), 20 deletions(-) (limited to 'examples') diff --git a/examples/pdf/pdfviewer/mainwindow.cpp b/examples/pdf/pdfviewer/mainwindow.cpp index 8ef7a07..fd26563 100644 --- a/examples/pdf/pdfviewer/mainwindow.cpp +++ b/examples/pdf/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/pdf/pdfviewer/mainwindow.h b/examples/pdf/pdfviewer/mainwindow.h index dedc812..40062a3 100644 --- a/examples/pdf/pdfviewer/mainwindow.h +++ b/examples/pdf/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/pdf/pdfviewer/mainwindow.ui b/examples/pdf/pdfviewer/mainwindow.ui index 251591d..738cef4 100644 --- a/examples/pdf/pdfviewer/mainwindow.ui +++ b/examples/pdf/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