当前位置: 首页 > ai >正文

Qt QPaintEvent绘图事件painter使用指南

绘制需在paintEvent函数中实现

用图片形象理解

如果加了刷子再用笔就相当于用笔画过的区域用刷子走

防雷达:

源文件

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QPainter>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);timer = new QTimer(this);connect(timer,&QTimer::timeout,this,[=]{update();});timer->start(10);
}Widget::~Widget()
{delete ui;
}
void Widget::paintEvent(QPaintEvent *event)
{static int i = 0;qDebug() << "painterEvent" << i++;QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing,true);//抗锯齿QBrush brush(Qt::black);painter.setBrush(brush);painter.drawRect(rect());painter.setBrush(Qt::NoBrush);//画刷只用一次否则会覆盖QPen pen(Qt::green,3);painter.setPen(pen);painter.translate(rect().center());//原点移到矩形正中央painter.drawEllipse(QPoint(0,0),7*height()/14,7*height()/14);painter.drawEllipse(QPoint(0,0),6*height()/14,6*height()/14);painter.drawEllipse(QPoint(0,0),5*height()/14,5*height()/14);painter.drawEllipse(QPoint(0,0),4*height()/14,4*height()/14);painter.drawEllipse(QPoint(0,0),3*height()/14,3*height()/14);painter.drawEllipse(QPoint(0,0),2*height()/14,2*height()/14);painter.drawEllipse(QPoint(0,0),1*height()/14,1*height()/14);painter.drawLine(-height()/2,0,height()/2,0);painter.drawLine(0,-height()/2,0,height()/2);QConicalGradient conicalGradient(0,0,30-i);conicalGradient.setColorAt(0,QColor(0,255,0,200));conicalGradient.setColorAt(0.1,QColor(0,255,0,100));conicalGradient.setColorAt(0.2,QColor(0,255,0,0));conicalGradient.setColorAt(1,QColor(0,255,0,0));//画笔加刷划过去painter.setBrush(conicalGradient);painter.setPen(Qt::NoPen);painter.drawPie(QRect(-height()/2,-height()/2,height(),height()),(30-i)*16,70*16);if (i==360) i=0;
}

头文件

#ifndef WIDGET_H
#define WIDGET_H#include <QTimer>
#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();
protected:void paintEvent(QPaintEvent *event) override;
private:Ui::Widget *ui;QTimer *timer;};
#endif // WIDGET_H

http://www.xdnf.cn/news/9206.html

相关文章:

  • Qt函数setText设置中文导致乱码/程序崩溃/报错:常量中有换行符
  • html css js网页制作成品——HTML+CSS+js醇香咖啡屋网页设计(5页)附源码
  • 大模型应用开发第三讲:大模型是Agent的“大脑”,提供通用推理能力(如GPT-4、Claude 3)
  • inviteflood:基于 UDP 的 SIP/SDP 洪水攻击工具!全参数详细教程!Kali Linux教程!
  • 从零实现本地语音识别(FunASR)
  • 在AIX环境下修改oracle 11g rac的IP地址
  • 使用requestAnimationFrame编写动画效果或者处理大量数据
  • 时序数据库IoTDB安装学习经验分享
  • 第三届全国先进技术成果转化大会成功举办 中科亿海微携品亮相
  • 【premiere教程】【01】【跑个流程】
  • 【android bluetooth 协议分析 02】【bluetooth hal 层详解 6】【高通蓝牙hal主要流程介绍-下】
  • Java 基础全面解析
  • Kettle 远程mysql 表导入到 hadoop hive
  • WPF【11_7】WPF实战-重构与美化(ViewModel的嵌套与分解、海量数据不要Join)
  • OpenCV CUDA模块图像处理------颜色空间处理之GPU 上对两张带有 Alpha 通道的图像进行合成操作函数alphaComp()
  • 【洛谷P9303题解】AC代码- [CCC 2023 J5] CCC Word Hunt
  • ubuntu22.04 安装 SecureCRT8.7.3
  • 没有经验能考OCP认证吗?
  • 视频逐帧提取图片的工具
  • 拆解汽车HMI设计:如何用3D可视化提升驾驶安全感?
  • RagFlow参数配置测试
  • 2025.5.27学习日记 linux三剑客 sed与正则表达式
  • 安卓开发用到的设计模式(3)行为型模式
  • Day31 -js应用 -实例:webpack jQuery的使用及其隐含的安全问题
  • C语言-指针
  • 目前可用随时更新,8种使用Claude4的方法!
  • 跨协议协同智造新实践:DeviceNet-EtherCAT网关驱动汽车焊接装配效能跃迁
  • word里面如何保存高清图片
  • idea 控制台 彩色打印日志
  • 主键与唯一键详解:概念、区别与面试要点