summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Koenig <tobias.koenig@kdab.com>2017-02-21 12:50:56 +0100
committerTobias Koenig <tobias.koenig@kdab.com>2017-02-21 14:46:23 +0000
commitf4bf49528e6e4254290697db233ec560bbef7ac2 (patch)
treef58ac1798f7d94618964bd535039dc45fa273fdc
parent06945630da40f602aa71b4dc6de37526a0285667 (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>
-rw-r--r--examples/pdf/pdfviewer/mainwindow.cpp18
-rw-r--r--examples/pdf/pdfviewer/mainwindow.h1
-rw-r--r--examples/pdf/pdfviewer/mainwindow.ui122
3 files changed, 121 insertions, 20 deletions
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 <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/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 @@
<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>