1 module examplewidgets.tabpainter; 2 3 import qt.config; 4 import qt.core.string; 5 import qt.core.timer; 6 import qt.gui.brush; 7 import qt.gui.color; 8 import qt.gui.event; 9 import qt.gui.image; 10 import qt.gui.painter; 11 import qt.gui.picture; 12 import qt.gui.pixmap; 13 import qt.gui.statictext; 14 import qt.helpers; 15 import qt.widgets.widget; 16 17 class TabPainter : QWidget 18 { 19 mixin(Q_OBJECT_D); 20 public: 21 /+ explicit +/this(QWidget parent = null) 22 { 23 super(parent); 24 25 timer = new QTimer(this); 26 connect(timer.signal!"timeout", this.slot!"update"); 27 timer.setInterval(100); 28 timer.start(); 29 30 staticText = QStaticText(globalInitVar!QString); 31 staticText.setText(QString("drawStaticText")); 32 } 33 34 protected: 35 override extern(C++) void paintEvent(QPaintEvent e) 36 { 37 auto p = QPainter(this); 38 drawImage(&p, QString("QPainter(QWidget)")); 39 40 QImage image = createImage(); 41 QPixmap pixmap = createPixmap(); 42 QPicture picture = createPicture(); 43 44 p.drawImage(0, 100, image); 45 p.drawPixmap(0, 200, pixmap); 46 p.drawPicture(0, 300, picture); 47 } 48 override extern(C++) void contextMenuEvent(QContextMenuEvent event) 49 { 50 import qt.gui.action; 51 import qt.widgets.filedialog; 52 import qt.widgets.menu; 53 import qt.gui.pagesize; 54 import qt.gui.pdfwriter; 55 56 scope menu = new QMenu(this); 57 QAction pdfAction = menu.addAction(QString("Create PDF")); 58 QAction selected = menu.exec(event.globalPos()); 59 60 if(selected == pdfAction) 61 { 62 QString filename = QFileDialog.getSaveFileName(this, globalInitVar!QString, globalInitVar!QString, QString("*.pdf")); 63 if(!filename.isEmpty()) 64 { 65 scope writer = new QPdfWriter(filename); 66 writer.setPageSize(QPageSize(QPageSize.PageSizeId.A4)); 67 writer.setResolution(50); 68 auto p = QPainter(writer); 69 drawImage(&p, QString("QPainter(QPdfWriter)")); 70 } 71 } 72 } 73 74 private: 75 QTimer timer; 76 QStaticText staticText; 77 78 final void drawImage(QPainter* p, const(QString) title) 79 { 80 import qt.core.datetime; 81 import qt.core.namespace; 82 import qt.core.rect; 83 import qt.gui.textoption; 84 85 p.drawText(15, 20, title); 86 p.setBrush(QBrush(/+ Qt:: +/qt.core.namespace.GlobalColor.blue)); 87 p.drawRect(15, 30, 100, 30); 88 p.drawText(QRectF(15, 30, 100, 30), QString("drawRect"), QTextOption(/+ Qt:: +/qt.core.namespace.Alignment.AlignCenter)); 89 90 p.setBrush(QBrush(/+ Qt:: +/qt.core.namespace.GlobalColor.green)); 91 p.drawEllipse(140, 30, 100, 30); 92 p.drawText(QRectF(140, 30, 100, 30), QString("drawEllipse"), QTextOption(/+ Qt:: +/qt.core.namespace.Alignment.AlignCenter)); 93 94 p.drawStaticText(270, 30, staticText); 95 96 p.drawText(15, 90, "currentDateTime: " ~ QDateTime.currentDateTime().toString(/+ Qt:: +/qt.core.namespace.DateFormat.ISODate)); 97 } 98 final QImage createImage() 99 { 100 import qt.core.namespace; 101 102 auto image = QImage(400, 100, QImage.Format.Format_RGBA8888); 103 image.fill(QColor(/+ Qt:: +/qt.core.namespace.GlobalColor.white)); 104 auto p = QPainter(image.paintDevice); 105 drawImage(&p, QString("QPainter(QImage)")); 106 return image; 107 } 108 final QPixmap createPixmap() 109 { 110 import qt.core.namespace; 111 112 auto image = QPixmap(400, 100); 113 image.fill(QColor(/+ Qt:: +/qt.core.namespace.GlobalColor.gray)); 114 auto p = QPainter(image.paintDevice); 115 drawImage(&p, QString("QPainter(QPixmap)")); 116 return image; 117 } 118 final QPicture createPicture() 119 { 120 QPicture image = QPicture(-1); 121 auto p = QPainter(image.paintDevice); 122 drawImage(&p, QString("QPainter(QPicture)")); 123 return image; 124 } 125 } 126