summaryrefslogtreecommitdiffstats
path: root/examples/pdfwidgets/pdfviewer
diff options
context:
space:
mode:
authorTobias Koenig <tobias.koenig@kdab.com>2017-02-21 12:50:56 +0100
committerMichal Klocek <michal.klocek@qt.io>2019-11-25 12:01:39 +0100
commit2cf4bb16c66050496cbdd2dcd3aa62c0a339a1f3 (patch)
treea3ddd83ec3ab315af526e69d6109dbdb31263b23 /examples/pdfwidgets/pdfviewer
parent8bd52f014ac0f2f9f8f948d8c63715d53e871962 (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/pdfwidgets/pdfviewer')
-rw-r--r--examples/pdfwidgets/pdfviewer/mainwindow.cpp18
-rw-r--r--examples/pdfwidgets/pdfviewer/mainwindow.h1
-rw-r--r--examples/pdfwidgets/pdfviewer/mainwindow.ui122
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>