blob: 469d13faff861ec495cfe6d0116545e0953257fd (
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
108
109
|
// Copyright (C) 2020 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
#include "qquickpdflinkmodel_p.h"
#include <QQuickItem>
#include <QQmlEngine>
#include <QStandardPaths>
QT_BEGIN_NAMESPACE
/*!
\qmltype PdfLinkModel
//! \instantiates QQuickPdfLinkModel
\inqmlmodule QtQuick.Pdf
\ingroup pdf
\brief A representation of links within a PDF document.
\since 5.15
PdfLinkModel provides the geometry and the destination for each link
that the specified \l page contains.
The available model roles are:
\value rectangle
Bounding rectangle around the link.
\value url
If the link is a web link, the URL for that; otherwise an empty URL.
\value page
If the link is an internal link, the page number to which the link should jump; otherwise \c {-1}.
\value location
If the link is an internal link, the location on the page to which the link should jump.
\value zoom
If the link is an internal link, the intended zoom level on the destination page.
Normally it will be used with \l {QtQuick::Repeater}{Repeater} to visualize
the links and provide the ability to click them:
\qml
Repeater {
model: PdfLinkModel {
document: root.document
page: image.currentFrame
}
delegate: Rectangle {
required property rect rectangle
required property url url
required property int page
color: "transparent"
border.color: "lightgrey"
x: rectangle.x
y: rectangle.y
width: rectangle.width
height: rectangle.height
HoverHandler { cursorShape: Qt.PointingHandCursor }
TapHandler {
onTapped: {
if (page >= 0)
image.currentFrame = page
else
Qt.openUrlExternally(url)
}
}
}
}
\endqml
\note General-purpose PDF viewing capabilities are provided by
\c PdfScrollablePageView and \c PdfMultiPageView. PdfLinkModel is only needed
when building PDF view components from scratch.
*/
QQuickPdfLinkModel::QQuickPdfLinkModel(QObject *parent)
: QPdfLinkModel(parent)
{
}
/*!
\internal
*/
QQuickPdfLinkModel::~QQuickPdfLinkModel() = default;
/*!
\qmlproperty PdfDocument PdfLinkModel::document
This property holds the PDF document in which links are to be found.
*/
QQuickPdfDocument *QQuickPdfLinkModel::document() const
{
return m_quickDocument;
}
void QQuickPdfLinkModel::setDocument(QQuickPdfDocument *document)
{
if (document == m_quickDocument)
return;
m_quickDocument = document;
if (document)
QPdfLinkModel::setDocument(document->document());
}
/*!
\qmlproperty int PdfLinkModel::page
This property holds the page number on which links are to be found.
*/
QT_END_NAMESPACE
#include "moc_qquickpdflinkmodel_p.cpp"
|