2019独角兽企业重金招聘Python工程师标准>>>
http://shouce.jb51.net/qt-beginning/15.html
//光标定位到QPainter类名上,然后按下键盘上的F1按键,这时会自动跳转到该类的帮助页面
1、新建Qt Gui应用,名为MainWindow,基类为QMainWindow。
2、修改mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void paintEvent(QPaintEvent *); //重绘事件处理函数的声明: 所有的绘制操作都要在这个函数里面完成。
};
#endif // MAINWINDOW_H
3、
3.1、绘制基本图形
#include "mainwindow.h"
#include
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
}
MainWindow::~MainWindow()
{
}
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this); //QPainter对象
painter.drawLine(QPointF(0, 0), QPointF(100, 100)); //注意:不包括工具栏,坐标就是窗口的起点
}
3.2 设置画笔
3.2.1、设置画笔颜色
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this); //QPainter对象
QPen pen; //画笔
pen.setColor(QColor(255, 0, 0)); //设置画笔颜色
painter.setPen(pen);
painter.drawLine(QPointF(0, 0), QPointF(100, 100)); //注意:不包括工具栏,坐标就是窗口的起点
}
3.2.2、自定义轮廓线样式
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this); //QPainter对象
QPen pen; //画笔
QVector dashes;
qreal space = 4;
dashes << 1 << space << 3 << space << 9 << space
<< 27 << space << 9 << space; //函数自定义样式:自定义轮廓线样式
pen.setDashPattern(dashes); //设置线性风格:
pen.setColor(QColor(255, 0, 0)); //设置画笔颜色
painter.setPen(pen);
painter.drawLine(QPointF(0, 0), QPointF(100, 100)); //注意:不包括工具栏,坐标就是窗口的起点
}
3.3、设置画刷
3.3.1、设置画刷颜色
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this); //QPainter对象
QPen pen; //画笔
pen.setColor(QColor(255, 0, 0)); //设置画笔颜色
painter.setPen(pen);
// QBrush brush(QColor(0, 255, 0, 125)); //画刷:填充矩形的颜色
QBrush brush(Qt::DotLine); //Qt预定义的颜色,在帮助中索引Qt::GlobalColor关键字查看
painter.setBrush(brush); //添加画刷
painter.drawRect(50, 50, 200, 100); //绘制矩形
}
3.3.2、设置画刷风格
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this); //QPainter对象
QPen pen; //画笔
pen.setColor(QColor(255, 0, 0)); //设置画笔颜色
painter.setPen(pen);
QBrush brush(Qt::DotLine); //Qt预定义的颜色,在帮助中索引Qt::GlobalColor关键字查看
brush.setStyle(Qt::HorPattern);
painter.setBrush(brush); //添加画刷
painter.drawRect(50, 50, 200, 100); //绘制矩形
}
4、画弧线
void MainWindow::paintEvent(QPaintEvent *)
{
QRectF rectangle(10.0, 20.0, 80.0, 60.0); //矩形
int startAngle = 30 * 16; //起始角度
int spanAngle = 120 * 16; //跨越度数
QPainter painter(this);
painter.drawArc(rectangle, startAngle, spanAngle);
//画弧线时,角度被分成了十六分之一,就是说,要想为30度,就得是30*16。它有起始角度和跨度,还有位置矩形
}