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. 填入已经实现的类,点击添加,添加完成后就可以选择提升
    在这里插入图片描述

总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

godot帧同步-关于“显示与逻辑分离”

很多教程说帧同步的关键是“显示与逻辑分离”,但是又没有具体讲解,我起初也没有搞懂这句话的意思,就直接上手开发帧同步了。在开发的过程中,一下子就悟了,所以分享一下。 显示与逻辑未分离(单机&#xff0…

《系统架构设计师教程(第2版)》第18章-安全架构设计理论与实践-02-安全模型

文章目录 1. 安全模型概述1.1 信息安全的目标1.2 安全模型 2. 状态机模型2.1 概念2.2 状态机模型工作步骤 3. Bell-LaPadula模型3.1 概念3.2 模型安全规则3.3 示例 3. Biba模型3.1 概念3.2 模型安全规则3.3 示例 4. Clark-Wilson模型(CWM)4.1 概述4.2 模…

低代码赋能汽车制造产业链场景系列

当前汽车行业数字化智能化转型浪潮下,整车及其上下游产业链的协同创新正变得至关重要。头部车企与上下游供应链企业正逐步解决在生产管理、业务互通、系统集成等方面的痛点与挑战。电动化、智能化、网联化作为汽车产业的三大趋势,正共同推动未来汽车产业…

记录一些yolo-world训练数据集的报错

参考的这个文章 https://blog.csdn.net/ITdaka/article/details/138863017?spm1001.2014.3001.5501 openai快捷下载:https://download.csdn.net/download/qq_43767886/89876720 然后我打算训练coco数据集,遇到了以下的问题 问题一 原因:…

AWS MySQL 升级(三)—— TAZ - 近0停机的小版本升级方案

与AWS交流了解到的新方案,没有实际试过,所以本篇主要是些原理 一、 TAZ的含义 TAZ实际上就是 3 AZ,扩展一些就是 Multi-AZ DB Cluster,即在3个可用区部署DB,具备两个只读备用实例。 二、 TAZ的主要用途 1. 近0停机的小…

Sublime快捷键的使用和修改

sublime快捷键 1.选择类 CtrlD 选中光标所占的文本,继续操作则会选中下一个相同的文本。 AltF3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑。举个栗子:快速选中并更改所有相同的变量名、函数名等。 CtrlL 选中整行&#…

基于Web的停车场管理系统(论文+源码)_kaic

摘要 我国经济的发展愈发迅速,车辆也随之增加的难以想象,因此车位的治理也越来越繁杂,为了方便停车位相关信息的管理,设计开发一个合理的停车位管理系统尤为重要。因而,具有信息方便读取和操作简便的停车位管理系统的设…

Qt和c++面试集合

目录 Qt面试 什么是信号(Signal)和槽(Slot)? 什么是Meta-Object系统? 什么是Qt的MVC模式? 1. QT中connect函数的第五个参数是什么?有什么作用? 3. 在QT中&#xff…

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

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

Redis持久化机制(RDBAOF详解)

目录 一、Redis持久化介绍二、Redis持久化方式1、RDB持久化(1) 介绍(2) RDB持久化触发机制(3) RDB优点和缺点(4) RDB流程 2、AOF(append only file)持久化(1) 介绍(2) AOF优点和缺点(3) AOF文件重写(4) AOF文件重写流程 三、AOF和RDB持久化注意事项 一、Redis持久化介绍 Redis…

plpo vue实战版教程

vue实战版教程 什么是plpo安装1.将plop添加到您的项目2.全局安装plop(可选,但建议使用方便)3.在项目根目录下创建一个 plopfile.js vue 实战(后台管理系统 - 增删改查)所需文件文件介绍创建配置文件 plopfile.js创建模板和脚本命令文件模板创…

ELK中L的filebeat配置及使用(超详细)

上一次讲解了如何在linux服务器上使用docker配置ELK中的E和K,这期着重讲解一下L怎么配置。 首先L在elk中指的是一个数据处理管道,可以从多种来源收集数据,进行处理和转换,然后将数据发送到 Elasticsearch。L的全称就是&#xff1…

dbeaver_导入到数据库中的csv文件显示黑色方块

dbeaver_导入到数据库中的csv文件显示黑色方块 ** 解决方案: ** 数据库导出到CSV用Excel打开中文乱码问题

H3C OSPF 综合排错实验

H3C OSPF 综合排错实验 实验拓扑 ​​ 实验需求 按照图示配置 IP 地址,所有路由器配置环回口 IP 地址为 X.X.X.X/32​ 作为 Router-id,X 为设备编号(R7 除外)按照图示分区域配置 OSPFR1 和 R6 上分别配置环回口来模拟业务网段…

【华为】基于华为交换机的VLAN配置与不同VLAN间通信实现

划分VLAN(虚拟局域网)主要作用: 一、提高网络安全性 广播域隔离访问控制增强 二、优化网络性能 减少网络拥塞提高网络可管理性 sysytem-view #进入系统视图配置参数 vlan batch 10 20 #批量创建vlanLSW3: int g0/0/1 port …

MYSQL 事物隔离级别的区别与现象

事物的ACID属性本章不再赘述,本章主要描述事物的隔离级别及隔离级别导致的现象,日常工作中该如何选择MYSQL的隔离级别。 MYSQL事物的隔离级别及各隔离级别存在的问题如下: 隔离级别/问题脏读不可重复读幻读读未提交(Read-Uncommitted)✅✅✅…

PostgreSQL学习笔记四:GUI管理工具

PostgreSQL 是一款广泛使用的开源关系数据库管理系统,拥有许多图形用户界面(GUI)工具来帮助用户更高效地管理数据库。以下是一些流行的 PostgreSQL 管理工具: pgAdmin: 一个流行的开源 PostgreSQL GUI 工具&#xff0c…

半周期检查-下降沿发上升沿采

1. 半周期路径Half Cycle Path 如果在设计中,同时存在上升沿触发的D触发器,以及下降沿触发的D触发器,则视为半周期路径,Half Cycle Path。 2. Setup time检查 时序图 时序报告: 起始点 startpoint:UFF5&a…

Jenkins+kubernetes流水线构建java项目

在传统的业务环境中,我们的应用部署或者更新都是采用手工的方式,但是在企业内部,应用架构一般都采用微服务,大部分项目都会对应几十个、上百甚至上千个微服务,并且还不仅仅只有一个项目,所以采用收工方式上…

微信小程序开发-配置文件详解

文章目录 一,小程序创建的配置文件介绍二,配置文件-全局配置-pages 配置作用:注意事项:示例: 三,配置文件-全局配置-window 配置示例: 四,配置文件-全局配置-tabbar 配置核心作用&am…