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 | | #include "MainWindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { QMenu *fileMenu = menuBar()->addMenu(QObject::tr("&File")); fileMenu->addAction(QObject::tr("Save As Svg"), this, &MainWindow::actionSaveAsSVG); }
MainWindow::~MainWindow() {
}
void MainWindow::paintEvent(QPaintEvent *event) { paintAll(); }
void MainWindow::actionSaveAsSVG() { QString filePath = QFileDialog::getSaveFileName(this, "Save SVG",
"", "SVG files (*.svg)"); if (filePath == "") return; QSvgGenerator generator; generator.setFileName(filePath); generator.setSize(QSize(this->width(), this->height())); generator.setViewBox(QRect(0, 0, this->width(), this->height())); generator.setTitle("SVG Example"); generator.setDescription("This SVG file is generated by Qt."); paintAll(&generator); }
void MainWindow::paintAll(QSvgGenerator *generator) { QPainter painter; if (generator) painter.begin(generator); else painter.begin(this);
// Draw Text painter.setFont(QFont("Times", 14, QFont::Bold)); painter.drawText(QPoint(20, 40), "Hello Qt"); // Draw Line painter.drawLine(QPoint(50, 70), QPoint(100, 100)); // Draw Rectangle painter.setBrush(Qt::BDiagPattern); painter.drawRect(QRect(40, 120, 80, 30)); // Draw Ellipse QPen ellipsePen; ellipsePen.setColor(Qt::red); ellipsePen.setStyle(Qt::DashDotLine); painter.setPen(ellipsePen); painter.drawEllipse(QPoint(80, 200), 50, 20); // Draw Rectangle QPainterPath rectPath; rectPath.addRect(QRect(150, 30, 100, 50)); painter.setPen(QPen(Qt::red, 1, Qt::DashDotLine, Qt::FlatCap, Qt::MiterJoin)); painter.setBrush(Qt::yellow); painter.drawPath(rectPath); // Draw Ellipse QPainterPath ellipsePath; ellipsePath.addEllipse(QPoint(200, 120), 50, 20); painter.setPen(QPen(QColor(79, 106, 25), 5, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); painter.setBrush(QColor(122, 163, 39)); painter.drawPath(ellipsePath); painter.end(); } |