基本图形的绘制与填充

2023-05-16

在这里插入图片描述

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;

protected:
    void paintEvent(QPaintEvent *event);

};

#endif // WIDGET_H

#include "widget.h"
#include "ui_widget.h"
#include <QPainter>

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

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

void Widget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.drawLine(QPoint(0, 0), QPoint(100, 100));

    //创建画笔
    QPen pen(Qt::green, 5, Qt::DotLine, Qt::RoundCap, Qt::RoundJoin);
    //使用画笔
    painter.setPen(pen);
    QRectF rectangle(70.0, 40.0, 80.0, 60.0);
    int startAngle = 30 * 16;
    int spanAngle = 120 * 16;
    //绘制圆弧
    painter.drawArc(rectangle, startAngle, spanAngle);

    //重新设置画笔
    pen.setWidth(1);
    pen.setStyle(Qt::SolidLine);
    painter.setPen(pen);
    //绘制一个矩形
    painter.drawRect(160, 20, 50, 40);
    // 创建画刷
    QBrush brush(QColor(0, 0, 255), Qt::Dense4Pattern);
    // 使用画刷
    painter.setBrush(brush);
    // 绘制椭圆
    painter.drawEllipse(220, 20, 50, 50);
    // 设置纹理
    brush.setTexture(QPixmap("../mydrawing/yafeilinux.png"));
    // 重新使用画刷
    painter.setBrush(brush);
    // 定义四个点
    static const QPointF points[4] = {
        QPointF(270.0, 80.0),
        QPointF(290.0, 10.0),
        QPointF(350.0, 30.0),
        QPointF(390.0, 70.0)
    };
    // 使用四个点绘制多边形
    painter.drawPolygon(points, 4);

    // 使用画刷填充一个矩形区域
    painter.fillRect(QRect(10, 100, 150, 20), QBrush(Qt::darkYellow));
    // 擦除一个矩形区域的内容
    painter.eraseRect(QRect(50, 0, 50, 120));


    // 线性渐变
    QLinearGradient linearGradient(QPointF(40, 190), QPointF(70, 190));
    // 插入颜色
    linearGradient.setColorAt(0, Qt::yellow);
    linearGradient.setColorAt(0.5, Qt::red);
    linearGradient.setColorAt(1, Qt::green);
    // 指定渐变区域以外的区域的扩散方式
    linearGradient.setSpread(QGradient::RepeatSpread);
    // 使用渐变作为画刷
    painter.setBrush(linearGradient);
    painter.drawRect(10, 170, 90, 40);

    // 辐射渐变
    QRadialGradient radialGradient(QPointF(200, 190), 50, QPointF(275, 200));
    radialGradient.setColorAt(0, QColor(255, 255, 100, 150));
    radialGradient.setColorAt(1, QColor(0, 0, 0, 50));
    painter.setBrush(radialGradient);
    painter.drawEllipse(QPointF(200, 190), 50, 50);

    // 锥形渐变
    QConicalGradient conicalGradient(QPointF(350, 190), 60);
    conicalGradient.setColorAt(0.2, Qt::cyan);
    conicalGradient.setColorAt(0.9, Qt::black);
    painter.setBrush(conicalGradient);
    painter.drawEllipse(QPointF(350, 190), 50, 50);

    // 画笔使用线性渐变来绘制直线和文字
    painter.setPen(QPen(linearGradient,2));
    painter.drawLine(0, 280, 100, 280);
    painter.drawText(150, 280, tr("helloQt!"));

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基本图形的绘制与填充 的相关文章

  • 线程事件 Event

    Python 线程事件 Event 前言一 介绍二 原理三 应用四 总结 前言 一 介绍 set 全局内置标志 Flag xff0c 将标志 Flag 设置为 True 通知在等待状态 wait 的线程恢复运行 isSet 获取标志 Fla
  • 线程定时器 Timer

    Python 线程定时器 Timer 原理 前言一 原理二 应用总结 前言 一 原理 指定时间间隔后启动线程 xff01 适用场景 xff1a 完成定时任务 xff0c 例如 xff1a 定时提醒 闹钟等等 span class token
  • 线程条件变量 Condition

    Python 线程条件变量 Condition 函数 前言 一 原理 二 应用 案例一 成语接龙 案例二 生产者与消费者模式 总结 前言 Python 互斥锁 Lock 主要作用是并行访问共享资源时 保护共享资源 防止出现脏数据 Pytho
  • Django——中间件

    Django中间件 前言1 中间件的定义方法2 执行流程3 多个中间件的执行顺序 前言 Django中的中间件是一个轻量级 底层的插件系统 xff0c 可以介入Django的请求和响应处理过程 xff0c 修改Django的输入或输出 中间
  • C语言中关于全局变量的深入理解及使用方式

    以前觉得全局变量很简单 xff0c 没有好好思考和理解 xff0c 看到其他项目中的一些用法不太理解 xff0c 最近正好有空 xff0c 好好梳理了一下关于全局变量的定义和引用 总的来说 xff0c 有以下几种方式 xff1a 方式1 x
  • Django——jinja2模板

    Django中使用jinja2模板 前言jinja2介绍1 安装jinja2模块2 Django配置jinja23 jinja2模板的使用绝大多数和Django自带模板一样4 jinja2自定义过滤器 前言 jinja2介绍 Jinja2
  • Django——自带模板

    Django自带模板使用 前言1 模板配置使用1 配置2 定义模板3 模板渲染 2 模板语法2 1 模板变量2 2 模板语句 3 过滤器4 模板继承5 模板注释 前言 1 模板配置使用 1 配置 在工程中创建模板目录templates 在s
  • Django——CSRF

    CSRF 前言CSRF防止 CSRF 攻击CSRF TOKEN的设置过程 前言 CSRF CSRF全拼为Cross Site Request Forgery xff0c 译为跨站请求伪造 CSRF指攻击者盗用了你的身份 xff0c 以你的名
  • 设计模式——工厂模式

    工厂方法模式 1 前言2 简介3 概念示例4 应用示例5 适用场景6 实现方式7 工厂方法模式优缺点8 与其它模式的关系 1 前言 工厂模式属于创建型模式 xff0c 它提供了一种创建对象的最佳方式 在工厂模式中 xff0c 我们在创建对象
  • Django——数据库

    Django数据库 ORM框架配置定义模型类1 定义2 迁移3 添加测试数据 4 演示工具使用1 shell工具2 查看MySQL数据库日志 5 数据库操作 增 删 改 查1 增加2 删除3 修改4 查询1 基本查询2 过滤查询 3 查询集
  • Django——Admin站点

    Admin站点 前言 使用Admin站点 1 管理界面本地化 2 创建超级管理员 3 App应用配置 4 注册模型类 5 调整站点信息 调整列表页展示 1 列表中的列显示哪些字段 2 页大小 3 操作选项 的位置 4 右侧栏过滤器 5 搜索
  • HMTT——数据库设计

    数据库设计 前言 1 需求 2 注意事项 MySQL数据库引擎 前言 1 需求 根据黑马头条前台产品原型图中用户端的部分 进行数据库设计 表结构 字段类型 是否允许为null 是否有默认值 索引设计 数据库引擎的选择 2 注意事项 为了查询
  • HMTT——ORM

    理解ORM 前言orm作用使用ORM的方式选择 前言 orm作用 省去自己拼写SQL xff0c 保证SQL语法的正确性 一次编写可以适配多个数据库 防止注入攻击 在数据库表名或字段名发生变化时 xff0c 只需修改模型类的映射 xff0c
  • HMTT——SQLAlchemy映射构建

    SQLAlchemy映射构建 前言 1 简介 2 安装 3 数据库连接设置 4 模型类字段与选项 5 构建模型类映射 前言 1 简介 SQLAlchemy是Python编程语言下的一款开源软件 提供了SQL工具包及对象关系映射 ORM 工具
  • HMTT——SQLAlchemy操作

    SQLAlchemy操作 前言 1 新增 2 查询 3 更新 4 删除 5 事务 前言 1 新增 user span class token operator span User span class token punctuation s
  • C语言 存储设备 地址, 字节数

    字节数 xff1a 单片机是多少位的 xff0c 对应的一个地址里面存在的字节数 就是几个字节 xff1a 比如 xff1a 32位单片机 xff0c 那一个地址应该最多存放4个字节 xff0c 一个字节8位 多少位 单片机 VS 地址 V
  • HMTT——数据库理论

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 数据库理论 前言 1 复制集与分布式 2 MySQL 1 主从复制 2 分库分表 sharding 垂直拆分 水平拆分 3 黑马头条项目应用 前言 1 复制集与分布式 复制集
  • HMTT——分布式ID

    分布式ID 前言 1 方案选择 UUID Redis 雪花算法 Snowflake 2 雪花算法实现 前言 1 方案选择 UUID UUID是通用唯一识别码 Universally Unique Identifier 的缩写 开放软件基金会
  • HMTT——数据库优化

    数据库优化 前言数据库优化1 理解索引2 SQL查询优化 3 数据库优化 前言 数据库优化 数据库是Web应用至关重要的一个环节 xff0c 其性能的优劣会影响整合Web应用 xff0c 所以需要对数据库进化优化以提高使用性能 以下提供几点
  • HMTT——Redis

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 Redis 前言 1 Redis事务 基本事务指令 Python客户端操作 2 Redis持久化 RDB 快照持久化 AOF 追加文件持久化 3 Redis高可用 4 Red

随机推荐

  • JWT & JWS & JWE

    JWT amp JWS amp JWE 前言 Json Web Token JWT JSON Web Signature JWS JSON Web Encryption JWE 前言 Json Web Token JWT JSON Web
  • JWT的Python库

    JWT的Python库 前言独立的JWT Python库项目封装 前言 独立的JWT Python库 itsdangerous JSONWebSignatureSerializer TimedJSONWebSignatureSerializ
  • JWT禁用问题

    JWT禁用问题 前言 需求 前言 需求 token颁发给用户后 在有效期内服务端都会认可 但是如果在token的有效期内需要让token失效 该怎么办 此问题的应用场景 用户修改密码 需要颁发新的token 禁用还在有效期内的老token
  • 对象存储——七牛云存储

    七牛云存储 前言 需求 编码 前言 需求 在项目中 如用户头像 文章图片等数据需要使用文件存储系统来保存 方案 自己搭建文件系统服务 选用第三方对象存储服务 我们在头条项目中使用七牛云对象存储服务 http www qiniu com 使用
  • 对象存储——CDN

    文章目录 前言常见问题 前言 使用第三方OSS服务的好处是集成了CDN服务 xff0c 下面来了解一下什么是CDN CDN 全称 Content Delivery Network或Content Distribute Network xff
  • HTTP通信

    通过网络访问接口实现HTTP通信 mainwindow h span class token macro property span class token directive hash span span class token dire
  • onmouseover和onmouseout事件小结

    前言 onmouseover和onmouseout事件是在pc端上使用非常广泛的鼠标划入划出事件 顾名思义 onmouseover是进入到dom元素中时触发的事件 而onmouseout是移出dom元素时触发的事件 它们即使在ie低版本也有
  • 获取网络接口信息

    获取网络接口信息 mainwindow h span class token macro property span class token directive hash span span class token directive ke
  • UDP通信

    udp发送端 UdpSenderDialog h span class token macro property span class token directive hash span span class token directive
  • TCP通信(01)

    服务器端向客户端发送数据 客户端 span class token macro property span class token directive hash span span class token directive keyword
  • TCP通信(02)

    客户端向服务端发送数据 客户端 span class token macro property span class token directive hash span span class token directive keyword
  • QT 5.15前版本QTcpSocket::error,QAbstractSocket::error信号无法关联槽

    QT5 15版本中 xff0c QAbstractSocket Class将原来的 span class token keyword void span span class token function error span span c
  • 进程通信(02)

    一 xff0c C 43 43 常用进程间通信 管道 Pipe xff1a 管道可用于具有亲缘关系进程间的通信 xff0c 允许一个进程和另一个与它有共同祖先的进程之间进行通信 命名管道 named pipe xff1a 命名管道克服了管道
  • 线程(01)

    使用QThread启动线程 span class token macro property span class token directive hash span span class token directive keyword if
  • 线程(02)——线程同步

    线程同步 互斥锁 QMutex读写锁QReadWriteLock信号量QSemaphore条件变量 QWaitCondition span class token macro property span class token direct
  • 网口调试助手

    一 前言 xff08 1 xff09 TCP通信 xff08 2 xff09 UDP通信 UDP xff08 User Datagram Protocol 用户数据报协议 xff09 是一个轻量级 不可靠 面向数据报的 无连接的协议 xff
  • 低延迟声音效果(01)

    span class token macro property span class token directive hash span span class token directive keyword ifndef span span
  • datax 同步mongodb数据库到hive(hdfs)和elasticserch(es)

    一 同步环境 1 mongodb版本 xff1a 3 6 3 xff08 有点老了 xff0c 后来发现flinkcdc都只能监控一张表 xff0c 多张表无法监控 xff09 2 datax版本 xff1a 自己编译的DataX data
  • Qt播放音视频文件报错DirectShowPlayerService::doRender: Unresolved error code 0x80040266或DirectShowPlayerServi

    Qt播放音视频文件报错DirectShowPlayerService doRender Unresolved error code 0x80040266或DirectShowPlayerService doSetUrlSource Unre
  • 基本图形的绘制与填充

    span class token macro property span class token directive hash span span class token directive keyword ifndef span span