1. 程式人生 > >C++ QT畫圖入門練習

C++ QT畫圖入門練習

視窗類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();
}