Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Michael Winkelmann
QmlSlidePrinter
Commits
1c18a7b0
Commit
1c18a7b0
authored
Nov 27, 2014
by
Taneli Peltoniemi
Browse files
Added support for printing custom items (taking a screenshot
parent
7a9e624b
Changes
2
Hide whitespace changes
Inline
Side-by-side
qmlprinter.cpp
View file @
1c18a7b0
...
...
@@ -52,7 +52,18 @@ void QmlPrinter::paintItem(QQuickItem *item, QQuickWindow *window, QPainter *pai
if
(
!
item
||
!
item
->
isVisible
())
return
;
if
(
item
->
flags
().
testFlag
(
QQuickItem
::
ItemHasContents
))
{
if
(
isCustomPrintItem
(
item
->
metaObject
()
->
className
()))
{
painter
->
save
();
if
(
item
->
clip
())
{
painter
->
setClipping
(
true
);
painter
->
setClipRect
(
item
->
clipRect
());
}
const
QRectF
rect
=
item
->
mapRectToScene
(
item
->
boundingRect
());
QImage
image
=
window
->
grabWindow
();
painter
->
drawImage
(
rect
.
x
(),
rect
.
y
(),
image
,
rect
.
x
(),
rect
.
y
(),
rect
.
width
(),
rect
.
height
());
painter
->
restore
();
}
else
if
(
item
->
flags
().
testFlag
(
QQuickItem
::
ItemHasContents
))
{
painter
->
save
();
if
(
item
->
clip
())
{
painter
->
setClipping
(
true
);
...
...
@@ -77,7 +88,6 @@ void QmlPrinter::paintItem(QQuickItem *item, QQuickWindow *window, QPainter *pai
}
painter
->
restore
();
}
const
QObjectList
children
=
item
->
children
();
foreach
(
QObject
*
obj
,
children
)
{
paintItem
(
qobject_cast
<
QQuickItem
*>
(
obj
),
window
,
painter
);
...
...
@@ -293,3 +303,19 @@ bool QmlPrinter::inherits(const QMetaObject *metaObject, const QString &name)
}
return
false
;
}
void
QmlPrinter
::
addPrintableItem
(
const
QString
&
item
)
{
printableItems
.
push_back
(
item
);
}
bool
QmlPrinter
::
isCustomPrintItem
(
const
QString
&
item
)
{
QListIterator
<
QString
>
it
(
printableItems
);
while
(
it
.
hasNext
())
{
QString
printableItem
=
it
.
next
();
if
(
item
.
contains
(
printableItem
))
return
true
;
}
return
false
;
}
qmlprinter.h
View file @
1c18a7b0
...
...
@@ -23,6 +23,8 @@ class QmlPrinter : public QObject
Q_OBJECT
private:
QList
<
QString
>
printableItems
;
void
paintItem
(
QQuickItem
*
item
,
QQuickWindow
*
window
,
QPainter
*
painter
);
void
paintQQuickRectangle
(
QQuickItem
*
item
,
QPainter
*
painter
);
void
paintQQuickText
(
QQuickItem
*
item
,
QPainter
*
painter
);
...
...
@@ -30,12 +32,14 @@ private:
void
paintQQuickCanvasItem
(
QQuickItem
*
item
,
QQuickWindow
*
window
,
QPainter
*
painter
);
bool
inherits
(
const
QMetaObject
*
metaObject
,
const
QString
&
name
);
bool
isCustomPrintItem
(
const
QString
&
item
);
public:
explicit
QmlPrinter
(
QObject
*
parent
=
0
);
virtual
~
QmlPrinter
();
void
printPDF
(
const
QString
&
location
,
QQuickItem
*
item
,
bool
showPDF
=
false
);
void
addPrintableItem
(
const
QString
&
item
);
signals:
public
slots
:
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment