diff options
author | Tobias Koenig <tobias.koenig@kdab.com> | 2017-02-21 12:50:56 +0100 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2019-11-25 12:01:39 +0100 |
commit | 2cf4bb16c66050496cbdd2dcd3aa62c0a339a1f3 (patch) | |
tree | a3ddd83ec3ab315af526e69d6109dbdb31263b23 /examples | |
parent | 8bd52f014ac0f2f9f8f948d8c63715d53e871962 (diff) |
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 <simon.hausmann@qt.io>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/pdfwidgets/pdfviewer/mainwindow.cpp | 18 | ||||
-rw-r--r-- | examples/pdfwidgets/pdfviewer/mainwindow.h | 1 | ||||
-rw-r--r-- | 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 <QFileDialog> #include <QLineEdit> #include <QMessageBox> +#include <QPdfBookmarkModel> #include <QPdfDocument> #include <QScroller> #include <QtMath> @@ -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 @@ <number>0</number> </property> <item> - <widget class="QScrollArea" name="scrollArea"> - <property name="frameShape"> - <enum>QFrame::NoFrame</enum> - </property> - <property name="lineWidth"> - <number>0</number> - </property> - <property name="widgetResizable"> - <bool>true</bool> - </property> - <widget class="QWidget" name="scrollAreaWidgetContents"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>700</width> - <height>517</height> - </rect> + <widget class="QWidget" name="widget" native="true"> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <property name="spacing"> + <number>0</number> </property> - <layout class="QVBoxLayout" name="verticalLayout_2"/> - </widget> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QSplitter" name="splitter"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <widget class="QTabWidget" name="tabWidget"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="tabPosition"> + <enum>QTabWidget::West</enum> + </property> + <property name="currentIndex"> + <number>0</number> + </property> + <property name="documentMode"> + <bool>false</bool> + </property> + <widget class="QWidget" name="bookmarkTab"> + <attribute name="title"> + <string>Bookmarks</string> + </attribute> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>2</number> + </property> + <property name="topMargin"> + <number>2</number> + </property> + <property name="rightMargin"> + <number>2</number> + </property> + <property name="bottomMargin"> + <number>2</number> + </property> + <item> + <widget class="QTreeView" name="bookmarkView"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="headerHidden"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="pagesTab"> + <attribute name="title"> + <string>Pages</string> + </attribute> + </widget> + </widget> + <widget class="QScrollArea" name="scrollArea"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>10</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="widgetResizable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="scrollAreaWidgetContents"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>401</width> + <height>515</height> + </rect> + </property> + </widget> + </widget> + </widget> + </item> + </layout> </widget> </item> </layout> |