Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
src_gui_painting_qpainter.cpp
Go to the documentation of this file.
1
// Copyright (C) 2016 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
#
include
<
QOpenGLFunctions
>
4
#
include
<
QPaintEvent
>
5
#
include
<
QPainter
>
6
#
include
<
QPainterPath
>
7
#
include
<
QPicture
>
8
#
include
<
QRectF
>
9
#
include
<
QWidget
>
10
11
12
namespace
src_gui_painting_qpainter
{
13
struct
SimpleExampleWidget
:
public
QPaintDevice
{
14
void
paintEvent
(QPaintEvent *);
15
QRect
rect
();
16
};
17
struct
MyWidget
:
public
QWidget
18
{
19
void
paintEvent
(QPaintEvent *);
20
};
21
QLine
drawingCode
;
22
23
24
//! [0]
25
void
SimpleExampleWidget
::
paintEvent
(QPaintEvent *)
26
{
27
QPainter painter(
this
);
28
painter.setPen(Qt::blue);
29
painter.setFont(QFont(
"Arial"
, 30));
30
painter.drawText(rect(), Qt::AlignCenter,
"Qt"
);
31
}
32
//! [0]
33
34
35
//! [1]
36
void
MyWidget
::
paintEvent
(QPaintEvent *)
37
{
38
QPainter p;
39
p.begin(
this
);
40
p.drawLine(drawingCode);
// drawing code
41
p.end();
42
}
43
//! [1]
44
45
}
// src_gui_painting_qpainter
46
namespace
src_gui_painting_qpainter2
{
47
struct
MyWidget
:
public
QWidget
48
{
49
void
paintEvent
(QPaintEvent *);
50
int
background
() {
return
0; }
51
void
wrapper1
();
52
void
wrapper2
();
53
void
wrapper3
();
54
void
wrapper4
();
55
void
wrapper5
();
56
void
wrapper6
();
57
void
wrapper7
();
58
void
wrapper8
();
59
void
wrapper9
();
60
void
wrapper10
();
61
void
wrapper11
();
62
void
wrapper12
();
63
void
wrapper13
();
64
void
wrapper14
();
65
void
wrapper15
();
66
void
concentricCircles
();
67
};
68
QLine
drawingCode
;
69
70
//! [2]
71
void
MyWidget
::
paintEvent
(QPaintEvent *)
72
{
73
QPainter p(
this
);
74
p.drawLine(drawingCode);
// drawing code
75
}
76
//! [2]
77
78
79
void
wrapper0
()
80
{
81
QPainter *painter =
nullptr
;
82
QPainter *painter2 =
nullptr
;
83
QPaintDevice *myWidget =
nullptr
;
84
//! [3]
85
painter->begin(
nullptr
);
// impossible - paint device cannot be null
86
87
QPixmap image(0, 0);
88
painter->begin(&image);
// impossible - image.isNull() == true;
89
90
painter->begin(myWidget);
91
painter2->begin(myWidget);
// impossible - only one painter at a time
92
//! [3]
93
}
// wrapper0
94
95
namespace
QPainterWrapper
96
{
97
struct
QPainter
{
98
void
rotate
(qreal angle);
99
void
setWorldTransform
(QTransform matrix,
bool
);
100
};
101
}
// QPainterWrapper
102
103
void
MyWidget
::
wrapper1
()
104
{
105
{
106
//! [5]
107
QPainterPath path;
108
path.moveTo(20, 80);
109
path.lineTo(20, 30);
110
path.cubicTo(80, 0, 50, 50, 80, 80);
111
112
QPainter painter(
this
);
113
painter.drawPath(path);
114
//! [5]
115
}
116
117
{
118
//! [6]
119
QLineF line(10.0, 80.0, 90.0, 20.0);
120
121
QPainter painter(
this
);
122
painter.drawLine(line);
123
//! [6]
124
}
125
}
// MyWidget::wrapper1()
126
127
128
void
MyWidget
::
wrapper2
()
129
{
130
//! [7]
131
QRectF rectangle(10.0, 20.0, 80.0, 60.0);
132
133
QPainter painter(
this
);
134
painter.drawRect(rectangle);
135
//! [7]
136
}
// MyWidget::wrapper2
137
138
139
void
MyWidget
::
wrapper3
()
140
{
141
//! [8]
142
QRectF rectangle(10.0, 20.0, 80.0, 60.0);
143
144
QPainter painter(
this
);
145
painter.drawRoundedRect(rectangle, 20.0, 15.0);
146
//! [8]
147
}
// MyWidget::wrapper3
148
149
150
void
MyWidget
::
wrapper4
()
151
{
152
//! [9]
153
QRectF rectangle(10.0, 20.0, 80.0, 60.0);
154
155
QPainter painter(
this
);
156
painter.drawEllipse(rectangle);
157
//! [9]
158
}
// MyWidget::wrapper4
159
160
161
void
MyWidget
::
wrapper5
()
162
{
163
//! [10]
164
QRectF rectangle(10.0, 20.0, 80.0, 60.0);
165
int
startAngle = 30 * 16;
166
int
spanAngle = 120 * 16;
167
168
QPainter painter(
this
);
169
painter.drawArc(rectangle, startAngle, spanAngle);
170
//! [10]
171
}
// MyWidget::wrapper5
172
173
174
void
MyWidget
::
wrapper6
()
175
{
176
//! [11]
177
QRectF rectangle(10.0, 20.0, 80.0, 60.0);
178
int
startAngle = 30 * 16;
179
int
spanAngle = 120 * 16;
180
181
QPainter painter(
this
);
182
painter.drawPie(rectangle, startAngle, spanAngle);
183
//! [11]
184
}
// MyWidget::wrapper6
185
186
187
void
MyWidget
::
wrapper7
() {
188
QRect rect;
189
190
//! [12]
191
QRectF rectangle(10.0, 20.0, 80.0, 60.0);
192
int
startAngle = 30 * 16;
193
int
spanAngle = 120 * 16;
194
195
QPainter painter(
this
);
196
painter.drawChord(rect, startAngle, spanAngle);
197
//! [12]
198
Q_UNUSED(rectangle);
199
}
// MyWidget::wrapper7
200
201
202
void
MyWidget
::
wrapper8
()
203
{
204
//! [13]
205
static
const
QPointF points[3] = {
206
QPointF(10.0, 80.0),
207
QPointF(20.0, 10.0),
208
QPointF(80.0, 30.0),
209
};
210
211
QPainter painter(
this
);
212
painter.drawPolyline(points, 3);
213
//! [13]
214
}
// MyWidget::wrapper8
215
216
217
void
MyWidget
::
wrapper9
()
218
{
219
//! [14]
220
static
const
QPointF points[4] = {
221
QPointF(10.0, 80.0),
222
QPointF(20.0, 10.0),
223
QPointF(80.0, 30.0),
224
QPointF(90.0, 70.0)
225
};
226
227
QPainter painter(
this
);
228
painter.drawPolygon(points, 4);
229
//! [14]
230
}
// MyWidget::wrapper9
231
232
233
void
MyWidget
::
wrapper10
()
234
{
235
{
236
//! [15]
237
static
const
QPointF points[4] = {
238
QPointF(10.0, 80.0),
239
QPointF(20.0, 10.0),
240
QPointF(80.0, 30.0),
241
QPointF(90.0, 70.0)
242
};
243
244
QPainter painter(
this
);
245
painter.drawConvexPolygon(points, 4);
246
//! [15]
247
}
248
249
{
250
//! [16]
251
QRectF target(10.0, 20.0, 80.0, 60.0);
252
QRectF source(0.0, 0.0, 70.0, 40.0);
253
QPixmap pixmap(
":myPixmap.png"
);
254
255
QPainter painter(
this
);
256
painter.drawPixmap(target, pixmap, source);
257
//! [16]
258
}
259
}
// MyWidget::wrapper10
260
261
262
void
MyWidget
::
wrapper11
()
263
{
264
QRect rect;
265
266
//! [17]
267
QPainter painter(
this
);
268
painter.drawText(rect, Qt::AlignCenter, tr(
"Qt\nProject"
));
269
//! [17]
270
}
// MyWidget::wrapper11
271
272
273
QRectF
fillRect
(QRect rect,
int
background) {
274
Q_UNUSED(rect);
275
Q_UNUSED(background);
276
return
QRectF();
277
};
278
279
void
MyWidget
::
wrapper12
()
280
{
281
QRect rectangle;
282
283
//! [18]
284
QPicture picture;
285
QPointF point(10.0, 20.0);
286
picture.load(
"drawing.pic"
);
287
288
QPainter painter(
this
);
289
painter.drawPicture(0, 0, picture);
290
//! [18]
291
292
Q_UNUSED(point);
293
294
295
//! [19]
296
fillRect(rectangle,
background
(
)
);
297
//! [19]
298
}
// MyWidget::wrapper12
299
300
301
void
MyWidget
::
wrapper13
()
302
{
303
//! [20]
304
QRectF target(10.0, 20.0, 80.0, 60.0);
305
QRectF source(0.0, 0.0, 70.0, 40.0);
306
QImage image(
":/images/myImage.png"
);
307
308
QPainter painter(
this
);
309
painter.drawImage(target, image, source);
310
//! [20]
311
}
// MyWidget::wrapper13
312
313
314
void
MyWidget
::
wrapper14
()
315
{
316
//! [21]
317
QPainter painter(
this
);
318
painter.fillRect(0, 0, 128, 128, Qt::green);
319
painter.beginNativePainting();
320
321
glEnable(GL_SCISSOR_TEST);
322
glScissor(0, 0, 64, 64);
323
324
glClearColor(1, 0, 0, 1);
325
glClear(GL_COLOR_BUFFER_BIT);
326
327
glDisable(GL_SCISSOR_TEST);
328
329
painter.endNativePainting();
330
//! [21]
331
}
// MyWidget::wrapper14
332
333
334
void
MyWidget
::
wrapper15
()
335
{
336
//! [drawText]
337
QPainter painter(
this
);
338
QFont font = painter.font();
339
font.setPixelSize(48);
340
painter.setFont(font);
341
342
const
QRect rectangle = QRect(0, 0, 100, 50);
343
QRect boundingRect;
344
painter.drawText(rectangle, 0, tr(
"Hello"
), &boundingRect);
345
346
QPen pen = painter.pen();
347
pen.setStyle(Qt::DotLine);
348
painter.setPen(pen);
349
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));
350
351
pen.setStyle(Qt::DashLine);
352
painter.setPen(pen);
353
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width()));
354
//! [drawText]
355
}
// MyWidget::wrapper15
356
357
void
MyWidget
::
concentricCircles
()
358
{
359
//! [renderHint]
360
QPainter painter(
this
);
361
painter.setRenderHint(QPainter::Antialiasing,
true
);
362
//! [renderHint]
363
int
diameter = 50;
364
//! [floatBased]
365
painter.drawEllipse(QRectF(-diameter / 2.0, -diameter / 2.0, diameter, diameter));
366
//! [floatBased]
367
//! [intBased]
368
painter.drawEllipse(QRect(-diameter / 2, -diameter / 2, diameter, diameter));
369
//! [intBased]
370
371
}
// MyWidget::concentricCircles
372
373
}
// src_gui_painting_qpainter2
src_gui_painting_qpainter2::QPainterWrapper
Definition
src_gui_painting_qpainter.cpp:96
src_gui_painting_qpainter2
Definition
src_gui_painting_qpainter.cpp:46
src_gui_painting_qpainter2::wrapper0
void wrapper0()
[2]
Definition
src_gui_painting_qpainter.cpp:79
src_gui_painting_qpainter2::drawingCode
QLine drawingCode
Definition
src_gui_painting_qpainter.cpp:68
src_gui_painting_qpainter2::fillRect
QRectF fillRect(QRect rect, int background)
Definition
src_gui_painting_qpainter.cpp:273
src_gui_painting_qpainter
Definition
src_gui_painting_qpainter.cpp:12
src_gui_painting_qpainter::drawingCode
QLine drawingCode
Definition
src_gui_painting_qpainter.cpp:21
src_gui_painting_qpainter2::MyWidget
Definition
src_gui_painting_qpainter.cpp:48
src_gui_painting_qpainter2::MyWidget::wrapper1
void wrapper1()
Definition
src_gui_painting_qpainter.cpp:103
src_gui_painting_qpainter2::MyWidget::wrapper7
void wrapper7()
Definition
src_gui_painting_qpainter.cpp:187
src_gui_painting_qpainter2::MyWidget::wrapper9
void wrapper9()
Definition
src_gui_painting_qpainter.cpp:217
src_gui_painting_qpainter2::MyWidget::wrapper15
void wrapper15()
Definition
src_gui_painting_qpainter.cpp:334
src_gui_painting_qpainter2::MyWidget::wrapper8
void wrapper8()
Definition
src_gui_painting_qpainter.cpp:202
src_gui_painting_qpainter2::MyWidget::paintEvent
void paintEvent(QPaintEvent *)
[2]
Definition
src_gui_painting_qpainter.cpp:71
src_gui_painting_qpainter2::MyWidget::wrapper12
void wrapper12()
Definition
src_gui_painting_qpainter.cpp:279
src_gui_painting_qpainter2::MyWidget::wrapper3
void wrapper3()
Definition
src_gui_painting_qpainter.cpp:139
src_gui_painting_qpainter2::MyWidget::concentricCircles
void concentricCircles()
Definition
src_gui_painting_qpainter.cpp:357
src_gui_painting_qpainter2::MyWidget::wrapper5
void wrapper5()
Definition
src_gui_painting_qpainter.cpp:161
src_gui_painting_qpainter2::MyWidget::wrapper4
void wrapper4()
Definition
src_gui_painting_qpainter.cpp:150
src_gui_painting_qpainter2::MyWidget::background
int background()
Definition
src_gui_painting_qpainter.cpp:50
src_gui_painting_qpainter2::MyWidget::wrapper10
void wrapper10()
Definition
src_gui_painting_qpainter.cpp:233
src_gui_painting_qpainter2::MyWidget::wrapper6
void wrapper6()
Definition
src_gui_painting_qpainter.cpp:174
src_gui_painting_qpainter2::MyWidget::wrapper2
void wrapper2()
Definition
src_gui_painting_qpainter.cpp:128
src_gui_painting_qpainter2::MyWidget::wrapper11
void wrapper11()
Definition
src_gui_painting_qpainter.cpp:262
src_gui_painting_qpainter2::MyWidget::wrapper13
void wrapper13()
Definition
src_gui_painting_qpainter.cpp:301
src_gui_painting_qpainter2::MyWidget::wrapper14
void wrapper14()
Definition
src_gui_painting_qpainter.cpp:314
src_gui_painting_qpainter2::QPainterWrapper::QPainter
Definition
src_gui_painting_qpainter.cpp:97
src_gui_painting_qpainter2::QPainterWrapper::QPainter::rotate
void rotate(qreal angle)
src_gui_painting_qpainter2::QPainterWrapper::QPainter::setWorldTransform
void setWorldTransform(QTransform matrix, bool)
src_gui_painting_qpainter::MyWidget
Definition
src_gui_painting_qpainter.cpp:18
src_gui_painting_qpainter::MyWidget::paintEvent
void paintEvent(QPaintEvent *)
[0]
Definition
src_gui_painting_qpainter.cpp:36
src_gui_painting_qpainter::SimpleExampleWidget
Definition
src_gui_painting_qpainter.cpp:13
src_gui_painting_qpainter::SimpleExampleWidget::paintEvent
void paintEvent(QPaintEvent *)
[0]
Definition
src_gui_painting_qpainter.cpp:25
src_gui_painting_qpainter::SimpleExampleWidget::rect
QRect rect()
qtbase
src
gui
doc
snippets
code
src_gui_painting_qpainter.cpp
Generated on
for Qt by
1.18.0