Qt-绘制多边形、椭圆、多条直线

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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/818389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【详解算法流程+程序】DBSCAN基于密度的聚类算法+源码-用K-means和DBSCAN算法对银行数据进行聚类并完成用户画像数据分析课设源码资料包

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法。 与划分和层次聚类方法不同&#xff0c;它将簇定义为密度相连的点的最大集合&#xff0c;能够把具有足够高密度的区域划分为簇&#xff0c; 并可在噪声的空间数据…

linux监控文件操作行为

linux监控文件操作行为 使用 auditd 系统 auditd 是Linux系统的一个安全和审计系统&#xff0c;它能够跟踪系统上发生的安全相关事件。要使用 auditd 来监控文件&#xff0c;你需要首先确保 auditd 已经安装并且运行在你的系统上。 然后&#xff0c;你可以使用 auditctl 命令…

MES管理系统中生产物料管理的设计

在数字化工厂建设的浪潮中&#xff0c;MES管理系统作为执行层的核心管理系统&#xff0c;其重要性日益凸显。特别是在生产物料管理方面&#xff0c;MES管理系统不仅承担物料计划指令的接收&#xff0c;还负责物料派工及使用反馈的数据收集&#xff0c;其业务流程的设计对数字化…

【AI 测试】语言交互模型测评方案

语言交互模型 具体是指那些? 语言交互模型主要指的是用于实现人类与设备之间通过自然语言进行交互的模型。这些模型通常涉及多个关键组件和技术,以理解和生成自然语言,从而实现有效的交互。 具体来说,语言交互模型可以包括以下几个主要部分: 语音识别(ASR):将声学语音…

树莓派点亮双色LED

双色LED灯准确来说叫双基色LED灯,是指模块只能显示2种颜色,一般是红色和绿色,可以有三种状态 :灭,颜色1亮,颜色2亮,根据颜色组合的不同,分为红蓝双色,黄蓝双色,红绿双色等等。 接线:将引脚S(绿色)和中间引脚(红色)连接到Raspberry Pi的GPIO接口上,对Raspberry…

文献速递:深度学习胰腺癌诊断--胰腺肿瘤的全端到端深度学习诊断

Title 题目 Fully end-to-end deep-learning-based diagnosis of pancreatic tumors 胰腺肿瘤的全端到端深度学习诊断 01 文献速递介绍 胰腺癌是最常见的肿瘤之一&#xff0c;预后不良且通常是致命的。没有肿瘤的患者只需要进一步观察&#xff0c;而胰腺肿瘤的诊断需要紧…

Java面试题:解释Java的基本数据类型及其大小和默认值,列举数据类型常见的错误知识点

Java的基本数据类型是Java编程语言中用于存储简单值的类型。这些数据类型包括整数类型、浮点类型、字符类型和布尔类型。下面是对这些基本数据类型的详细解释&#xff0c;包括它们的大小和默认值&#xff0c;以及一些常见的面试中容易出错的知识点。 基本数据类型及其大小和默…

【数据结构与算法】递推

来源&#xff1a;《信息学奥赛一本通》 所谓递推&#xff0c;是指从已知的初始条件出发&#xff0c;依据某种递推关系&#xff0c;逐次推出所要求的各中间结果及最后结果。其中初始条件或是问题本身已经给定&#xff0c;或是通过对问题的分析与化简后确定。 从已知条件出发逐…

计算机网络——应用层(3)电子邮件

电子邮件 1、概述&#xff1a; 电子邮件是使用电子设备交换的邮件及其方法。 优点&#xff1a;使用方便&#xff0c;传递迅速&#xff0c;费用低廉&#xff0c;可传送多种信息 重要标准&#xff1a; 简单邮件发送协议&#xff1a;SMTP互联网文本报文格式通用互联网邮件扩充…

leetcode717-1-bit and 2-bit Characters

题目 有两种特殊字符&#xff1a; 第一种字符可以用一比特 0 表示 第二种字符可以用两比特&#xff08;10 或 11&#xff09;表示 给你一个以 0 结尾的二进制数组 bits &#xff0c;如果最后一个字符必须是一个一比特字符&#xff0c;则返回 true 。 示例 1: 输入: bits [1, …

浏览器工作原理与实践--跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性

通过上篇文章的介绍&#xff0c;我们知道了同源策略可以隔离各个站点之间的DOM交互、页面数据和网络通信&#xff0c;虽然严格的同源策略会带来更多的安全&#xff0c;但是也束缚了Web。这就需要在安全和自由之间找到一个平衡点&#xff0c;所以我们默认页面中可以引用任意第三…

Linux--主函数的三个参数

主函数的三个参数 1).主函数的三个参数的含义: argc:主函数的参数个数 argv:主函数的参数内容 envp:环境变量; #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc,char *argv[],char *envp[]) { int i0;printf("argc%d…

web前端框架设计第四课-条件判断与列表渲染

web前端框架设计第四课-条件判断与列表渲染 一.预习笔记 1.条件判断 1-1&#xff1a;v-if指令&#xff1a;根据表达式的值来判断是否输出DOM元素 1-2&#xff1a;template中使用v-if 1-3&#xff1a;v-else 1-4&#xff1a;v-else-if 1-5&#xff1a;v-show&#xff08;不支…

【快捷部署】017_MongoDB(6.0.14)

&#x1f4e3;【快捷部署系列】017期信息 编号选型版本操作系统部署形式部署模式复检时间017MongoDB6.0.14Ubuntu 20.04apt单机2024-04-11 一、快捷部署 #!/bin/bash ################################################################################# # 作者&#xff1a;…

SQL注入sqli_labs靶场第十七题

B站教学视频很详细 【sql注入之sqli-labs系列教程(less11-17)】sqli-labs_33_less17_哔哩哔哩_bilibili 我将SQL语句在页面中显示&#xff0c;以便更深入学习。 1.寻找注入点 修改密码的一个页面。 输入正确的账号密码&#xff0c;可以看到&#xff0c;账号为admin&#xf…

python内置函数dir()、divmod()详解

dir() 函数是 Python 中的一个强大的内置函数&#xff0c;它用于列出指定对象的有效属性和方法。它可以不带参数使用&#xff0c;以列出当前作用域中的名称&#xff0c;或者带一个对象作为参数&#xff0c;以列出该对象的属性和方法。让我们来看看它的用法和示例&#xff1a; …

PHP Storm 2024.1使用

本文讲的是phpstorm 2024.1最新版本激活使用教程&#xff0c;本教程适用于windows操作系统。 1.先去idea官网下载phpstorm包&#xff0c;我这里以2023.2最新版本为例 官网地址&#xff1a;https://www.jetbrains.com/zh-cn/phpstorm/ 2.下载下来后安装&#xff0c;点下一步 …

Qt5 编译oracle数据库驱动

库文件 1、Qt源码目录&#xff1a;D:\Qt5\5.15.2\Src\qtbase\src\plugins\sqldrivers\oci 2、oracle客户端SDK: https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html 下载各版本中的如下压缩包&#xff0c;一定要版本相同的 将两个压缩包…

第三十九节 Java Applet基础

applet是一种Java程序。它一般运行在支持Java的Web浏览器内。因为它有完整的Java API支持,所以applet是一个全功能的Java应用程序。 如下所示是独立的Java应用程序和applet程序之间重要的不同&#xff1a; Java中applet类继承了 java.applet.Applet类Applet类没有定义main()&…

使用 git 提交项目到 github

文章推荐&#xff1a;https://zhuanlan.zhihu.com/p/193140870 连接失败&#xff1a;https://zhuanlan.zhihu.com/p/521340971 分支出错&#xff1a;https://blog.csdn.net/gongdamrgao/article/details/115032436