零基础开始QT绘图(1)

37 篇文章 15 订阅

目前很多利用Arduino或者stm32来进行机器人或者相关的AI试验的伙伴们,都有界面显示或者图形显示的需求,如果仅仅是图形显示,我们完全可以借助processing来完成,既方便又快捷,但Processing的不足时完整的界面编写就变得困难了。
所以,我们可以借助QT来完成带有界面的绘图应该是比较方便的,个人的观点,至少比VC更容易。
从今天开始,我们来尝试使用QT完成下位机需要的图形显示。当然,如果您不需要带界面(菜单、工具栏、状态栏)的绘图可以参考我写的Processing绘图的相关文章。
Processing摸索前行(2)

在编写绘图程序之前,我们必须明白一点,QT中的绘图一般在paintEvent下实现。而paintEvent是Widget类或者Widget派生类下的一个虚函数,需要实现它才能便于我们绘图。
弄清楚了这个道理,那我们就可以着手开始我们的第一个绘图程序啦。

第一步,在QT中建立一个Widgets程序:
在这里插入图片描述
当然,您如果觉得Widget让你看着不舒服,不习惯,而你习惯了Form,那你完全可以进入程序把Widget删除,然后自己添加一个form也是完全可以的。需要注意的是在选择类信息的时候注意选择为Widget:
在这里插入图片描述

第二步,在Widget的cpp文件中实现虚函数paintEvent,在头文件中增加其声明:

#include "widget.h"
#include "ui_widget.h"

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

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

void Widget::paintEvent(QPaintEvent *event)
{
    
    
    
}

头文件中增加声明
在这里插入图片描述
第三步,在paintEvent中写一个简单的painter调用程序

#include "widget.h"
#include "ui_widget.h"
#include"qpainter.h"        //不加入这个头文件,是不能调用QPainter的
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

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

//实现painterEvent
 void Widget::paintEvent(QPaintEvent *event)
{
      QPainter painters(this);   //初始化绘画器
      painters.drawRect(this->width()/4,this->height()/4,this->width()/2,this->height()/2);  绘制矩形
      }

当然,别忘记在Widget的cpp中加入头文件#include “qpainter.h”,否则你在写painters.drawRect函数的时候就不会有智能代码提示。当然也不会有程序的正确运行!
我们上面的程序就是在Widget的中央绘制了一个矩形,效果如下:
在这里插入图片描述
总结提炼:
1、在Processing中我们实现了虚函数void draw,而QT中我们实现了虚函数 void PaintEvent,不同的是Processing只有一个主文件,而这里我们的实现是在widget的cpp文件中完成的。
2、Processing中没有绘图器(QPainter),直接可以绘图,更不需要初始化Painter(当然,在VC中可能更复杂,需要初始化绘图设备)。
3、在Processing中,任何绘制都只直接显示出来的,比如rect语句就是绘制矩形,而不需要借助QPainter的drawRect的命令来实现绘制。
总结起来就是在QT中比Processing中多了一个步骤,即必须初始化一个QPainter。

好了,第一次绘图,到这里已经算完工了,后续我们将结合Arduino的传感器及通讯来完成一些稍微复杂一些的绘图。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河西石头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值