summaryrefslogtreecommitdiffstats
path: root/src/gui/doc/snippets/code/src_gui_painting_qpainter.cpp
blob: cfbf3e44a2d275b2c39e7cd873dcf3cd34b53cda (plain)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376
// Copyright (C) 2016 The Qt Company Ltd.// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause#include <QOpenGLFunctions>#include <QPaintEvent>#include <QPainter>#include <QPainterPath>#include <QPicture>#include <QRectF>#include <QWidget>namespace src_gui_painting_qpainter {struct SimpleExampleWidget :public QPaintDevice {voidpaintEvent(QPaintEvent *); QRect rect();};struct MyWidget :public QWidget {voidpaintEvent(QPaintEvent *);}; QLine drawingCode;//! [0]voidSimpleExampleWidget::paintEvent(QPaintEvent *){ QPainter painter(this); painter.setPen(Qt::blue); painter.setFont(QFont("Arial",30)); painter.drawText(rect(),Qt::AlignCenter,"Qt");}//! [0]//! [1]voidMyWidget::paintEvent(QPaintEvent *){ QPainter p; p.begin(this); p.drawLine(drawingCode);// drawing code p.end();}//! [1]}// src_gui_painting_qpainternamespace src_gui_painting_qpainter2 {struct MyWidget :public QWidget {voidpaintEvent(QPaintEvent *);intbackground() {return0; }voidwrapper1();voidwrapper2();voidwrapper3();voidwrapper4();voidwrapper5();voidwrapper6();voidwrapper7();voidwrapper8();voidwrapper9();voidwrapper10();voidwrapper11();voidwrapper12();voidwrapper13();voidwrapper14();voidwrapper15();voidconcentricCircles();}; QLine drawingCode;//! [2]voidMyWidget::paintEvent(QPaintEvent *){ QPainter p(this); p.drawLine(drawingCode);// drawing code}//! [2]voidwrapper0() { QPainter *painter =nullptr; QPainter *painter2 =nullptr; QPaintDevice *myWidget =nullptr;//! [3] painter->begin(0);// impossible - paint device cannot be 0 QPixmap image(0,0); painter->begin(&image);// impossible - image.isNull() == true; painter->begin(myWidget); painter2->begin(myWidget);// impossible - only one painter at a time//! [3]}// wrapper0namespace QPainterWrapper {struct QPainter {voidrotate(qreal angle);voidsetWorldTransform(QTransform matrix,bool);};}// QPainterWrappervoidMyWidget::wrapper1() {//! [5] QPainterPath path; path.moveTo(20,80); path.lineTo(20,30); path.cubicTo(80,0,50,50,80,80); QPainter painter(this); painter.drawPath(path);//! [5]//! [6] QLineF line(10.0,80.0,90.0,20.0); QPainter painter(this); painter.drawLine(line);//! [6]}// MyWidget::wrapper1()voidMyWidget::wrapper2() {//! [7] QRectF rectangle(10.0,20.0,80.0,60.0); QPainter painter(this); painter.drawRect(rectangle);//! [7]}// MyWidget::wrapper2voidMyWidget::wrapper3() {//! [8] QRectF rectangle(10.0,20.0,80.0,60.0); QPainter painter(this); painter.drawRoundedRect(rectangle,20.0,15.0);//! [8]}// MyWidget::wrapper3voidMyWidget::wrapper4() {//! [9] QRectF rectangle(10.0,20.0,80.0,60.0); QPainter painter(this); painter.drawEllipse(rectangle);//! [9]}// MyWidget::wrapper4voidMyWidget::wrapper5() {//! [10] QRectF rectangle(10.0,20.0,80.0,60.0);int startAngle =30*16;int spanAngle =120*16; QPainter painter(this); painter.drawArc(rectangle, startAngle, spanAngle);//! [10]}// MyWidget::wrapper5voidMyWidget::wrapper6() {//! [11] QRectF rectangle(10.0,20.0,80.0,60.0);int startAngle =30*16;int spanAngle =120*16; QPainter painter(this); painter.drawPie(rectangle, startAngle, spanAngle);//! [11]}// MyWidget::wrapper6voidMyWidget::wrapper7() { QRect rect;//! [12] QRectF rectangle(10.0,20.0,80.0,60.0);int startAngle =30*16;int spanAngle =120*16; QPainter painter(this); painter.drawChord(rect, startAngle, spanAngle);//! [12]Q_UNUSED(rectangle);}// MyWidget::wrapper7voidMyWidget::wrapper8() {//! [13]static const QPointF points[3] = {QPointF(10.0,80.0),QPointF(20.0,10.0),QPointF(80.0,30.0),}; QPainter painter(this); painter.drawPolyline(points,3);//! [13]}// MyWidget::wrapper8voidMyWidget::wrapper9() {//! [14]static const QPointF points[4] = {QPointF(10.0,80.0),QPointF(20.0,10.0),QPointF(80.0,30.0),QPointF(90.0,70.0)}; QPainter painter(this); painter.drawPolygon(points,4);//! [14]}// MyWidget::wrapper9voidMyWidget::wrapper10() {//! [15]static const QPointF points[4] = {QPointF(10.0,80.0),QPointF(20.0,10.0),QPointF(80.0,30.0),QPointF(90.0,70.0)}; QPainter painter(this); painter.drawConvexPolygon(points,4);//! [15]//! [16] QRectF target(10.0,20.0,80.0,60.0); QRectF source(0.0,0.0,70.0,40.0); QPixmap pixmap(":myPixmap.png"); QPainter painter(this); painter.drawPixmap(target, pixmap, source);//! [16]}// MyWidget::wrapper10voidMyWidget::wrapper11() { QRect rect;//! [17] QPainter painter(this); painter.drawText(rect,Qt::AlignCenter,tr("Qt\nProject"));//! [17]}// MyWidget::wrapper11 QRectF fillRect(QRect rect,int background) {Q_UNUSED(rect);Q_UNUSED(background);returnQRectF();};voidMyWidget::wrapper12() { QRect rectangle;//! [18] QPicture picture; QPointF point(10.0,20.0); picture.load("drawing.pic"); QPainter painter(this); painter.drawPicture(0,0, picture);//! [18]Q_UNUSED(point);//! [19]fillRect(rectangle,background());//! [19]}// MyWidget::wrapper12voidMyWidget::wrapper13() {//! [20] QRectF target(10.0,20.0,80.0,60.0); QRectF source(0.0,0.0,70.0,40.0); QImage image(":/images/myImage.png"); QPainter painter(this); painter.drawImage(target, image, source);//! [20]}// MyWidget::wrapper13voidMyWidget::wrapper14() {//! [21] QPainter painter(this); painter.fillRect(0,0,128,128,Qt::green); painter.beginNativePainting();glEnable(GL_SCISSOR_TEST);glScissor(0,0,64,64);glClearColor(1,0,0,1);glClear(GL_COLOR_BUFFER_BIT);glDisable(GL_SCISSOR_TEST); painter.endNativePainting();//! [21]}// MyWidget::wrapper14voidMyWidget::wrapper15() {//! [drawText] QPainter painter(this); QFont font = painter.font(); font.setPixelSize(48); painter.setFont(font);const QRect rectangle =QRect(0,0,100,50); QRect boundingRect; painter.drawText(rectangle,0,tr("Hello"), &boundingRect); QPen pen = painter.pen(); pen.setStyle(Qt::DotLine); painter.setPen(pen); painter.drawRect(boundingRect.adjusted(0,0, -pen.width(), -pen.width())); pen.setStyle(Qt::DashLine); painter.setPen(pen); painter.drawRect(rectangle.adjusted(0,0, -pen.width(), -pen.width()));//! [drawText]}// MyWidget::wrapper15voidMyWidget::concentricCircles(){//! [renderHint] QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing,true);//! [renderHint]int diameter =50;//! [floatBased] painter.drawEllipse(QRectF(-diameter /2.0, -diameter /2.0, diameter, diameter));//! [floatBased]//! [intBased] painter.drawEllipse(QRect(-diameter /2, -diameter /2, diameter, diameter));//! [intBased]}// MyWidget::concentricCircles}// src_gui_painting_qpainter2
close