#include <QPaintEvent> //畫圖事件git
#include <QPainter>// 畫圖設備函數
1 基本知識ui
Painter 畫圖設備this
pen :筆code
brush:刷子事件
經過改變筆和刷子實現多個樣式ip
//例如get
QPainter painter(this);
QPen pen(Qt::DotLine);
QBrush brush(Qt::blue);
brush.setStyle(Qt::HorPattern);
painter.setPen(pen);
painter.setBrush(brush);
painter.drawRect(50,50,200,100);源碼
在paintevent 事件實現 qt
效果以下:
2 基本經常使用方法
會發現 大部分函數都是內聯函數
//填充矩形
void fillRect(const QRectF &, const QBrush &);
inline void fillRect(int x, int y, int w, int h, const QBrush &);
void fillRect(const QRect &, const QBrush &);
void fillRect(const QRectF &, const QColor &color);
inline void fillRect(int x, int y, int w, int h, const QColor &color);
void fillRect(const QRect &, const QColor &color);
inline void fillRect(int x, int y, int w, int h, Qt::GlobalColor c);
inline void fillRect(const QRect &r, Qt::GlobalColor c);
inline void fillRect(const QRectF &r, Qt::GlobalColor c);
inline void fillRect(int x, int y, int w, int h, Qt::BrushStyle style);
inline void fillRect(const QRect &r, Qt::BrushStyle style);
inline void fillRect(const QRectF &r, Qt::BrushStyle style);
//畫線
inline void QPainter::drawLine(const QLineF &)
inline void QPainter::drawLine(const QLine &line)
inline void QPainter::drawLine(int x1, int y1, int x2, int y2)
inline void QPainter::drawLine(const QPoint &p1, const QPoint &p2)
inline void QPainter::drawLine(const QPointF &p1, const QPointF &p2)
//畫矩形
inline void QPainter::drawRect(const QRectF &rect)
inline void QPainter::drawRect(int x, int y, int w, int h)
inline void QPainter::drawRect(const QRect &r)
//畫圓
inline void QPainter::drawEllipse(int x, int y, int w, int h)
inline void QPainter::drawEllipse(const QPointF ¢er, qreal rx, qreal ry)
inline void QPainter::drawEllipse(const QPoint ¢er, int rx, int ry)
//畫弧線
inline void QPainter::drawArc(const QRect &r, int a, int alen)
inline void QPainter::drawArc(int x, int y, int w, int h, int a, int alen)
3 源碼
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::paintEvent(QPaintEvent *) { QPainter painter(this); QPen pen(Qt::DotLine); QBrush brush(Qt::blue); brush.setStyle(Qt::HorPattern); painter.setPen(pen); painter.setBrush(brush); painter.drawRect(50,50,200,100); } Demo16 地址:https://gitee.com/codemaner/qt_learning_record/tree/master