C++ QT畫圖入門練習
阿新 • • 發佈:2018-11-25
視窗類widget.h
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = nullptr); ~Widget(); protected: /* 重寫繪圖函式,虛擬函式 * 如果在視窗繪圖,必須放在繪圖事件裡實現 * 繪圖時間內部自動呼叫,視窗需要重繪的時候 */ void paintEvent(QPaintEvent *); private: Ui::Widget *ui; }; #endif // WIDGET_H
實現函式
#include "widget.h" #include "ui_widget.h" #include<QPainter> #include<Qpen> #include<QBrush> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); } Widget::~Widget() { delete ui; } void Widget::paintEvent(QPaintEvent *) { QPainter p(this); // 建立畫家物件 // 繪圖操作 // p.drawxxx() // 畫背景圖 // p.drawPixmap(0,0,width()) // 定義畫筆 QPen pen; pen.setWidth(5); // 設定筆的寬度 pen.setColor(QColor(14,9,234)); // rgb設定顏色 //pen.setStyle(Qt::DashLine); // 設定風格 p.setPen(pen); // 把筆交給畫家 // 建立畫刷物件 QBrush brush; brush.setColor(Qt::red); // 設定顏色 brush.setStyle(Qt::Dense1Pattern); // 設定樣式 // 把畫刷交給畫家 p.setBrush(brush); // 畫直線 p.drawLine(50,50,150,50); p.drawLine(50,50,50,150); // 畫矩形 p.drawRect(150,150,100,50); // 畫圓形 p.drawEllipse(QPoint(150,150),50,25); }
主函式
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}