1、说明
所有的绘图操作是在绘图事件中进行。
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();//重写虚函数virtual void paintEvent(QPaintEvent *event);
private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.c
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QPainter>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//设置窗口固定大小(X轴,Y轴)this->resize(1800,1000);
}
void MainWindow::paintEvent(QPaintEvent *event)
{}
2、绘制多个点
//定义画家 ,需要一个画板(QPaintDevice)对象来构造 QPainter(QPaintDevice *)QPainter painter(this);//反锯齿设置painter.setRenderHint(QPainter::Antialiasing);/*------------1、绘制一个点函数-----------*///定义画笔 15是画笔的粗细QPen pen( QBrush( Qt::red) , 15);//把画笔给画家painter.setPen(pen);//开始画点painter.drawPoint(QPoint( 0,0));//绘制两个点painter.drawPoint(QPoint( 100,100));/*------------2、绘制多个点函数,定义函数-----------*///画多个点 定义的一个数组//定义画笔 15是画笔的粗细 设置为蓝色pen.setColor(Qt::blue);//把画笔给画家painter.setPen(pen);QPoint pts[]={ QPoint( 200,200),QPoint( 300,300) };painter.drawPoints(pts,2);//绘制多个点函数
3、绘制多条直线
/*------------3、方式二:绘制一条直线方式一-----------*/QPen pen1( QBrush( Qt::red) , 15);pen1.setColor(Qt::green);//修改画笔的粗细pen1.setWidth(3);//重新设置画笔 画笔交给画家 替换画家手中原来的画笔 **重要**painter.setPen(pen1);//画直线 两点确定一条直线painter.drawLine(QPoint( 200,200),QPoint( 300,300) );/*------------4、绘制多条直线,定义数组多用,重要-----------*/pen1.setColor(Qt::blue);painter.setPen(pen1); //替换画家手中原来的画笔 **重要**QLine line(400,400, 500,500);QLine line2(600,600, 700,700);QLine lines[] ={ line, line2};//画多条线 将多条画线交给画家 替换原来的画线painter.drawLines(lines,2 );
4、绘制椭圆
/*------------5、绘制椭圆-----------*///绘制椭圆代码 矩形圆心坐标(200,100) 长轴50 短轴20painter.drawEllipse(200,100,50,20);
5、绘制多边形
此处绘制的多边形会形成闭合。
/*------------6、绘制多边形-----------*/QPolygon pts;//3个点, (32,0) (44,0) (38,50)pts.setPoints(3, 32 ,0 , 44, 0,38,50);//设置画笔与画刷 画笔颜色 填充颜色// painter.setPen(QPen(Qt::white,0.5));// painter.setBrush( QColor("#FF4500") );painter.drawPolygon(pts);
6、绘制多条直线
同时绘制多条直线。
/*------------6、绘制多条直线-----------*/QLineF line3(43.0576+400,-468.5811+800, 357.5507+400,-557.6556+800);QLineF line4(47.6494+410,-467.0754+800, 363.1472+410,-556.4345+800);QLineF _lines[] ={ line3, line4};//画多条线 将多条画线交给画家 替换原来的画线painter.drawLines(_lines,2);