QT基本绘图

QT绘图

1.概述

这篇文章介绍如何绘图

2.绘图基本操作

创建一个普通的widget类型的项目

在widget.h 文件中重写绘图事件

c 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    
    ~Widget();
//    绘图事件
    void paintEvent(QPaintEvent *event);

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

widget.cpp 文件中进行绘画

c 复制代码
#include "widget.h"
#include "ui_widget.h"
//导入绘画类
#include <QPainter>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

}

//重写绘画事件
void Widget::paintEvent(QPaintEvent *event)
{
//    实例化绘画对象,这个this指的是在Widget对象中绘画,它不是对象树。
    QPainter painter(this);
//    绘制直线
    painter.drawLine(QPoint(10,10), QPoint(100,10));

//    画椭圆,第一个参数中心点,第二个参数X轴,第三个参数y轴
    painter.drawEllipse(QPoint(100,100),50,80);

//    画圆,第一个参数中心点,第二个参数X轴,第三个参数y轴
    painter.drawEllipse(QPoint(200,300),80,80);

//    画矩形 前两个参数是起点位置,后两个参数是长度
    painter.drawRect(QRect(10,10,20,30));

//    画文字,第一个参数是x和y的起点位置,第二个参数是显示的文字
    painter.drawText(QPoint(30,30),"千里江陵一日还");


}

Widget::~Widget()
{
    delete ui;
}

3.设置画笔

设置画笔使用QPen 类提供的函数,首先查看帮助手册,了解他有哪些功能可以设置。

1.设置画笔颜色
c 复制代码
//    实例化绘画对象,这个this指的是在Widget对象中绘画,它不是对象树。
    QPainter painter(this);

//    设置画笔颜色
    QPen pen(QColor(255,255,0));
//    让绘画对象使用这个画笔
    painter.setPen(pen);

//    绘制直线
    painter.drawLine(QPoint(10,10), QPoint(100,10));
2.设置画笔宽度
c 复制代码
//    设置宽度
    pen.setWidth(10);
3.设置画笔风格

通过帮助文档查看画笔风格有哪些样式,点击style函数,跳转到枚举值。

点击Qt::PenStyle查看penStyle风格

c 复制代码
//    设置风格
    pen.setStyle(Qt::DashLine);
4.设置画刷

查看帮助手册,QBrush类提供的画刷功能。

c 复制代码
//    设置画刷对象
    QBrush brush(Qt::green);

//    设置画刷样式
    brush.setStyle(Qt::Dense7Pattern);

//    让画家使用画刷
    painter.setBrush(brush);

效果展示

相关推荐
学逆向的8 分钟前
汇编——位运算
开发语言·汇编·算法·网络安全
zhangjw3416 分钟前
第29篇:Java伪共享与对象分配:并发性能优化的关键
java·开发语言·性能优化
Java面试题总结1 小时前
Python 开发技巧 · 高级装饰器 —— 从基础到工业级实战
开发语言·python
liulilittle2 小时前
Exhaustive drift-fix simulation V2 — KCC on shared-bottleneck wired path.
开发语言·网络·python·tcp/ip·计算机网络·信息与通信·通信
名字还没想好☜2 小时前
Go error 处理:errors.Is/As 与错误包装
开发语言·后端·golang·go·错误处理
红糖奶茶2 小时前
Python 中 while 循环计数异常的常见原因分析与正确搓搓
开发语言·python
Lucky_Turtle3 小时前
【论文写作】PDF图片不清晰,打印生成PDF空白大,PDF字体嵌入
开发语言·pdf·c#
csdndenglu3 小时前
Easy3D:一个轻量级、易用、高效的C++库,用于处理和渲染3D数据,无复杂要求时可替代VTK
开发语言·c++·图形渲染·3d渲染
byte轻骑兵3 小时前
【AVRCP】规范精讲[41]:AV/C指令帧解析,蓝牙遥控交互的底层语言
c语言·开发语言·人机交互·智能制造·avrcp
发光小北3 小时前
Bronze100系列plc Modbus及自由口通信案例
开发语言·php