blob: 54e9ddfd5ba22585232c32bf9abf2c7d522a584b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
// Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Tobias König <tobias.koenig@kdab.com>
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QPDFVIEW_H
#define QPDFVIEW_H
#include <QtPdf/qpdfdocument.h>
#include <QtPdf/qpdflink.h>
#include <QtPdfWidgets/qtpdfwidgetsglobal.h>
#include <QtWidgets/qabstractscrollarea.h>
QT_BEGIN_NAMESPACE
class QPdfDocument;
class QPdfPageNavigator;
class QPdfSearchModel;
class QPdfViewPrivate;
class Q_PDF_WIDGETS_EXPORT QPdfView : public QAbstractScrollArea
{
Q_OBJECT
Q_PROPERTY(QPdfDocument* document READ document WRITE setDocument NOTIFY documentChanged)
Q_PROPERTY(PageMode pageMode READ pageMode WRITE setPageMode NOTIFY pageModeChanged)
Q_PROPERTY(ZoomMode zoomMode READ zoomMode WRITE setZoomMode NOTIFY zoomModeChanged)
Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged)
Q_PROPERTY(int pageSpacing READ pageSpacing WRITE setPageSpacing NOTIFY pageSpacingChanged)
Q_PROPERTY(QMargins documentMargins READ documentMargins WRITE setDocumentMargins NOTIFY documentMarginsChanged)
Q_PROPERTY(QPdfSearchModel* searchModel READ searchModel WRITE setSearchModel NOTIFY searchModelChanged)
Q_PROPERTY(int currentSearchResult READ currentSearchResult WRITE setCurrentSearchResult NOTIFY currentSearchResultChanged)
public:
enum class PageMode
{
SinglePage,
MultiPage
};
Q_ENUM(PageMode)
enum class ZoomMode
{
Custom,
FitToWidth,
FitInView
};
Q_ENUM(ZoomMode)
QPdfView() : QPdfView(nullptr) {}
explicit QPdfView(QWidget *parent);
~QPdfView();
void setDocument(QPdfDocument *document);
QPdfDocument *document() const;
QPdfSearchModel *searchModel() const;
void setSearchModel(QPdfSearchModel *searchModel);
int currentSearchResult() const;
QPdfPageNavigator *pageNavigator() const;
PageMode pageMode() const;
ZoomMode zoomMode() const;
qreal zoomFactor() const;
int pageSpacing() const;
void setPageSpacing(int spacing);
QMargins documentMargins() const;
void setDocumentMargins(QMargins margins);
public Q_SLOTS:
void setPageMode(QPdfView::PageMode mode);
void setZoomMode(QPdfView::ZoomMode mode);
void setZoomFactor(qreal factor);
void setCurrentSearchResult(int currentResult);
Q_SIGNALS:
void documentChanged(QPdfDocument *document);
void pageModeChanged(QPdfView::PageMode pageMode);
void zoomModeChanged(QPdfView::ZoomMode zoomMode);
void zoomFactorChanged(qreal zoomFactor);
void pageSpacingChanged(int pageSpacing);
void documentMarginsChanged(QMargins documentMargins);
void searchModelChanged(QPdfSearchModel *searchModel);
void currentSearchResultChanged(int currentResult);
protected:
void paintEvent(QPaintEvent *event) override;
void resizeEvent(QResizeEvent *event) override;
void scrollContentsBy(int dx, int dy) override;
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
private:
Q_DECLARE_PRIVATE(QPdfView)
QScopedPointer<QPdfViewPrivate> d_ptr;
};
QT_END_NAMESPACE
#endif // QPDFVIEW_H
|