Qt 自绘开关按钮以及设计器中的提升为用法

文章目录

    • 自绘按钮实现
      • 概要
      • 效果图
      • 代码
    • '提升为'用法
      • 介绍
      • 步骤
    • 总结

自绘按钮实现

概要

  • 当我们需要一个开关样式的QPushbutton,没有图片的话,我们可以采用自绘的形式实现。
  • 且使用QtDesinger提升为Promote to的功能加入界面中,而不是使用代码的方式。

效果图

请添加图片描述

代码

  • 代码相对简单,主要看一下绘制的实现
void SwitchButton::paintEvent(QPaintEvent *event)
{QPushButton::paintEvent(event); // 调用基类的绘制事件QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);// 定义滚珠的半径qreal ballRadius = height() * 0.4; // 可以根据需要调整滚珠大小qreal padding = (height() - ballRadius * 2) / 2; // 按钮内部边距// 绘制按钮的背景QRectF rect(padding, padding, width() - padding * 2, height() - padding * 2);painter.setPen(Qt::NoPen);if(m_isAutoMode){painter.setBrush(QColor(33, 51, 107));}else{painter.setBrush(QColor(25, 127, 224));}painter.drawRoundedRect(rect, ballRadius, ballRadius); // 使用滚珠半径作为圆角半径// 绘制圆形滚珠qreal ballPosition = m_isAutoMode ? rect.width() - ballRadius * 2 : 0;QRectF ballRect(ballPosition + padding, padding, ballRadius * 2, ballRadius * 2);// 设置滚珠的渐变色qreal gradientCenterX = ballPosition + padding + ballRadius;qreal gradientCenterY = padding + ballRadius;QRadialGradient gradient(gradientCenterX, gradientCenterY, ballRadius);gradient.setColorAt(0, QColor(25, 127, 224));gradient.setColorAt(1, QColor(33, 51, 107));painter.setBrush(gradient);painter.drawEllipse(ballRect);// 绘制文本painter.setPen(Qt::white);QString text = m_isAutoMode ? "自动模式" : "手动模式";painter.drawText(rect, Qt::AlignCenter, text);
}

'提升为’用法

介绍

  • 在Qt设计器中,它允许用户将一个标准Qt Widget转换为自定义的QWidget子类。这样,用户可以在设计器中使用自己的控件,同时还能在代码中添加额外的功能或属性。

步骤

  1. 随便拖入一个按钮到设计器中 在这里插入图片描述
  2. 右键它,找到’提升为’选项
    在这里插入图片描述
  3. 填入已经实现的类,点击添加,添加完成后就可以选择提升
    在这里插入图片描述

总结

  • 知识理应共享,源码在此
  • 提升为用起来还是很方便的,可以大大减少代码量以及提高阅读效率

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

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

相关文章

OpenCV高级图形用户界面(1)创建滑动条函数createTrackbar()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 创建一个滑动条并将其附加到指定的窗口。 该函数 createTrackbar 创建一个具有指定名称和范围的滑动条(滑块或范围控制)…

作为一名测试工程师如何学习Kubernetes(k8s)技能

前言 Kubernetes(K8s)作为云原生时代的关键技术之一,对于运维工程师、开发工程师以及测试工程师来说,都是一门需要掌握的重要技术。作为一名软件测试工程师,学习Kubernetes是一个有助于提升自动化测试、容器化测试以及云原生应用测试能力的重…

重学SpringBoot3-集成Redis(三)之注解缓存策略设置

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(三)之注解缓存策略设置 1. 引入 Redis 依赖2. 配置 RedisCacheManager 及自定义过期策略2.1 示例代码:自定…

API接口开发心得,接口封装方法

API(应用程序编程接口)是定义了一组规则,允许不同的软件应用程序或组件交互的技术。在Web开发中,API通常通过HTTP请求实现。在API接口的开发过程中,接口封装是一个重要环节。以下是一些API接口开发心得以及接口封装方法…

如何使用ssm实现大学生兼职跟踪系统

TOC 10909ssm大学生兼职跟踪系统 系统概述 进过系统的分析后,就开始记性系统的设计,系统设计包含总体设计和详细设计。总体设计只是一个大体的设计,经过了总体设计,我们能够划分出系统的一些东西,例如文件、文档、数…

【探测器】线阵相机中的 TDI 技术

【探测器】线阵相机中的 TDI 技术 1.背景2.TDI相机3.场景应用 1.背景 TDI 即Time Delay Integration时间延迟积分。 TDI相机是线阵相机的一种特殊类型,带有独特的时间延迟积分(TDI)技术。 换句话说,TDI相机是线阵相机的一个高级版…

点评项目-6-缓存更新策略、缓存穿透、雪崩

缓存更新策略 使用 redis 缓存记录的信息,有可能在数据库被信息被修改导致信息不一致,使用缓存更新来解决这个问题 缓存更新策略主要有三种: 1.内存淘汰(redis默认开启) 2.超时剔除(给key添加TTL时间) 3.主动更新(编写业务逻辑) 主动更新策…

vite学习教程02、vite+vue2配置环境变量

文章目录 前言1、安装依赖2、配置环境变量3、应用环境变量4、运行和构建项目资料获取 前言 博主介绍:✌目前全网粉丝3W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容&#xff1…

Linux使用Docker部署Paperless-ngx结合内网穿透打造无纸化远程办公

文章目录 前言1. 部署Paperless-ngx2. 本地访问Paperless-ngx3. Linux安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 本文主要介绍如何在Linux系统本地部署Paperless-ngx开源文档管理系统,并结合cpolar内网穿透工具解决本地部署…

又被特斯拉演了?继续“画饼式”发布Robotaxi,产业链静观其变

9月底的暴涨后,A股资产正经历回调,科技板块变现参差。不过,无人驾驶领域的预期依然很强。 10月10日科技股全线调整之际,无人驾驶板块盘中的巨幅震荡拉升就是典型的预热动作。东箭科技、天龙股份等多只智能驾驶个股涨停。核心驱动…

【STM32开发之寄存器版】(九)-模数转换ADC

一、前言 本次DEMO目标: 本文将使用STM32F103ZET6的ADC1通道1来采样外部电压值,并使用串口在上位机XCOM上打印出电压值。 二、模数转换原理与基本概念 2.1 ADC基本概念 模数转换器(ADC,Analog-to-Digital Converter)是…

与ZoomEye功能类似的搜索引擎还有哪些?(渗透课作业)

与ZoomEye功能类似的搜索引擎有: Shodan:被誉为“物联网的搜索引擎”,专注于扫描和索引连接到互联网的各种设备,如智能家居设备、工业控制系统、摄像头、数据库等。它提供全球互联网设备的可视化视图,帮助用户了解网络…

xss-labs靶场第一关测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、注入点寻找 2、使用hackbar进行payload测试 3、绕过结果 四、源代码分析 五、结论 一、测试环境 1、系统环境 渗透机:本机(127.0.0.1) 靶 机:本机(127.0.0.…

AI时代大厂AI项目管理学习路线

AI时代避免被裁员,大厂AI项目管理学习路线主要包括: 1、AI项目管理基础技能。 2、项目管理AI技术知识。 3、数据分析与决策。 4、AI项目管理工具。 5、AI项目管理知识扩展。 01 AI项目管理基础技能。 AI项目管理基础技能构成了项目管理的骨架&…

# linux从入门到精通-从基础学起,逐步提升,探索linux奥秘(九)--网络设置与文件上传下载

linux从入门到精通-从基础学起,逐步提升,探索linux奥秘(九)–网络设置与文件上传下载 一、网络设置 1、首先知道网卡配置文件位置:/etc/sysconfig/network-scripts [rootlocalhost test1]# ls /etc/sysconfig/netwo…

【Java SE 题库】递归的魅力之--> 汉诺塔问题

🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 目录 1. 题目 2. 分析 2.1 图解 2.2 代码解析 3. 完整代码 3.1 运行截图 4. 小结 1. 题目 汉诺塔问题是一个经典的递归问题,源自一个古老的印度传…

剪辑视频怎么学?四大工具助你轻松入门!

无论是制作短视频、记录生活点滴,还是从事专业影视制作,掌握视频剪辑技巧都至关重要。那么,剪辑视频怎么学呢?本文将为大家推荐四款实用的视频剪辑工具,助你轻松入门! 福昕视频剪辑:简单易用&a…

双十一买些提高幸福感的生活单品!五款精选好物推荐~

双十一购物狂欢即将来临,这是一年一度的购物盛宴,家电和数码产品通常会在这个时期提供诱人的折扣。但品牌众多,每款产品又各有千秋,让人难以抉择。今天,我将分享一些在双十一期间值得考虑的高品质好物,让我…

AI与物理学的交汇:Hinton与Hopfield获诺贝尔物理学奖

诺贝尔物理学奖颁给了AI!机器学习先驱Hinton与Hopfield联手获奖,出乎所有人的意料。 今年的诺贝尔物理学奖颁给了机器学习领域的两位先驱,杰弗里辛顿(Geoffrey Hinton)和约翰霍普菲尔德(John Hopfield&…

外包干了6天,技术明显退步。。。

我是一名大专生,自20年通过校招进入湖南某软件公司以来,便扎根于功能测试岗位,一晃便是近四年的光阴。今年9月,我如梦初醒,意识到长时间待在舒适的环境中,已让我变得不思进取,技术停滞不前。更令…