首页 > 其他分享 >QT画图

QT画图

时间:2023-08-14 22:45:18浏览次数:29  
标签:QT 16 30 画图 弧度 100 绘制 painter

重点:每个 QWidget都自带的功能,继承了QPainteDevice都可以使用QPainter来进行绘图。我们需要调用paintEvent绘制事件,这个事件QWidget这个类自带的事件。重写这个事件:如果父类有某个办法,此时这个子类需要有一个更跟父类同样方法名称的。

实例化对象写法:QQPainter painter(this);//相当于QPainter * painter=new QPainter(this);

画直线举例:painter.drawLine(0,20,300,20); //类似于直角坐标。0,20表示起点;300,20表示终点。给定 2 个点,使用 drawLine() 画一条线段

void MainWidget::paintEvent(QPaintEvent *) {
    QPainter painter(this);
    painter.translate(30, 30);
 
    int w = 300;
    int h = 210;
    int gap = 30;
 
    // 画水平线
    for (int y = 0; y <= h; y += gap) {
        painter.drawLine(0, y, w, y);
    }
 
    // 画垂直线
    for (int x = 0; x <= w; x += gap) {
        painter.drawLine(x, 0, x, h);
    }
}
此例子为用drawLine用来画网格线。

画弧线
painter.drawArc(30,30,100,100,30 * 16,140 *16);//30,30表示开始绘制位置;100,100,表示弧度绘制范围宽高;30 * 16表示起始弧度;140 * 16表示跨越弧度;注意:角度 * 16=弧度。

设置渲染模式(就是让曲线、弧线更为平缓),使得平滑渲染
painter.setRenderHint(QPianter::Antialiasing,true); //QPainter::Antialiasing代表平滑

画饼图(类似弧):
painter.drawPie(50,50,100,100,0,90 * 16)//50,50为起始位置;100,100为宽高;0为起始弧度;90为结束弧度

画矩形
painter.drawRect(200,100,150,100)//200,100表示绘制起点,150,100表示绘制宽高

填充绘制
painter.fillRect(100,100,100,100,QBrush(QColor(225,0,0)));//QBrush表示笔刷对象,QColor表示颜色对象

绘制坐标轴

//绘制出一个坐标加折线图

//原点
painter.drawText(10,210,"0");
//绘制X轴
painter.drawLine(10,200,310,200);
//分割X轴
for(int i=2;i<31;i++)  //i=2是因为开始原点不用分割,i<31从第三个数来
{
    painter.drawLine(10*i,195,10*i,200);  //195-200之间的5是X轴上突出刻量的点(绘出来的点)
    if(i%2==0) //就是偶数的时候才画一个点,这样就不用画点太密集不好看
    painter.drawText(10*i,210,QString::number(10*i));
}
painter.drawText(300,210,"x轴");  //“X轴”会显示再这条线的后面,但是从美观方面来讲“X轴”显示在这条线的里面一点且下面,所以是300,210
//绘制Y轴,Y轴的起点就是X轴的起点
painter.drawLine(10,200,10,10);
//分割Y轴
for(int i=2;i<20;i++)
{
    painter.drawLine(10,10*i,15,10*i);
    if(i%2==0);
    painter.drawText(15,210*(20-i),QString::number(10*i));
}
painter.drawText(10,10,"Y轴");
//生成随机数,产生[0,190]之间的随机数
    int x1,y1,x2,y2; 
    x1=10*i;
    y1=qrand()%191;//表示Y轴的值
for(int i=1;i<30;i++)
{
    x2=10*(i+1);
    y2=qrand()%191;//表示Y轴的值
    painter.setPen(QColor(0,0,0);
    painter.drawLine(x1,y1,x2,y2);
    x1=x2;
    y1=y2;
    painter.setPen(QColor(225,0,0);
    painter.setFont(QFont("隶书",30));
    //画点
    painter.drawPoint(QPoint(x2,y2));
}

标签:QT,16,30,画图,弧度,100,绘制,painter
From: https://www.cnblogs.com/zongmeijiezuishuai/p/17629987.html

相关文章

  • Qt下的基本TCP网络通信流程
    给大家讲一下如何使用Qt相关类的进行TCP通信。前置知识:c++基础、qt基础、网络基础使用Qt提供的类进行基于TCP的套接字通信需要用到两个类:​ QTcpServer:服务器类,用于监听客户端连接以及和客户端建立连接。​ QTcpSocket:通信的套接字类,客户端、服务器端都需要使用。这两个套......
  • 一文玩转MQTT (ESP8266 DHT11 MQTT MYSQL方案)
    本文我们来聊一聊esp8266利用mqtt协议进行通信。并将数据数据存入数据库的操作。关于MQTTMQTT(消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,MQTT最大优点在于,用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。搭建MQTT服务器......
  • QT的安装
    qt的安装:  http://download.qt.io/archive/qt/  这是下载的网址,我下载的是5.12.11 需要先注册一个qt的账号才可以进行安装。https://www.qt.io/  这是账号的注册网址。 接下来进行安装。      安装完之后进行简答的测试:     ......
  • 在MQTT通信中用AT指令发送json格式的内容
    在MQTT通信中使用AT指令发送JSON格式的内容,需要使用适用于你的设备的AT指令集,并按照以下步骤进行操作:建立MQTT连接:首先,使用AT指令建立与MQTT代理服务器的连接。这可能涉及到设置服务器地址、端口、用户名、密码等参数。创建JSON数据:在你的设备中,使用AT指令创建要发送的JSON格式的......
  • 【8月摸鱼计划】Air780E|物联网模组|AT命令|MQTT接入|云平台(1)-MQTT基本原理及AT步骤
    基础资料基于Air780E开发板:Air780E文档中心简介:AT开发探讨重点AT固件是通信模组或者单片机(MCU)+网络模块标准固件的基本配置,该模式定制化程序较高,简单易上手,但缺点也较为明显,仅用于快速基本功能验证。本系列主要探讨MQTT方式手动接入、信息订阅及发布的基本原理,后续详细介绍接入多......
  • Qt 之 QWidget QLabel
    @TOC前言一、Qt工程介绍QtCreator以工程项目的方式对源码进行管理一个QtCreator工程包含不同类型的文件。a-.pro.user用户配置描述文件-.h头文件.cpp源文件.ui界面描述文件资源文件(图片,音频,等)pro项目描述文件的基本组成#一注释起始符:以“#”开始,到这一行结束。快捷键:C......
  • 【PYQT5】textEdit滚动条跟踪内容向下
    classMain(QWidget,Ui_Form):def__init__(self):super(Main,self).__init__()self.setupUi(self)self.textEdit.setReadOnly(True)#设置为只读QTimer.singleShot(0,self.thread_check)#延迟执行#textEdit......
  • Linux MQTT智能家居(温度,湿度,环境监测,摄像头等界面布局设置)
    (文章目录)前言本篇文章来完成另外三个界面的布局设置。这里会使用到feiyangqingyun的一些控件库。一、温度湿度曲线布局TempHumtiy.h:#ifndefTEMPHUMTIY_H#defineTEMPHUMTIY_H#include<QWidget>#include"wavechart.h"namespaceUi{classTempHumtiy;}class......
  • 【PYQT5】创建线程,防止执行函数卡死界面
    #线程函数classWorkerThread(QThread):resultReady=pyqtSignal(object)def__init__(self,func,*args,**kwargs):super().__init__()self.func=funcself.args=argsself.kwargs=kwargsdefrun(self):se......
  • Linux上安装Qt Creator
    在Linux系统上安装QtCreator1.在qt官网下载安装包:qt-opensource-linux-x64-5.12.9.run2.wgethttps:://download.qt.io/archive/qt/5.12/5.12.9/qt-opensource-linux-x64-5.12.9.run3.赋予可执行权限,加上sudo权限进入安装,这样会安装在/opt目录下chmod+xqt-opensource-linux-......