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

《QT实用小工具·四十八》趣味开关

1、概述
源码放在文章末尾

该项目实现了各种样式的趣味开关:
1、爱心形状的switch开关,支持手势拖动、按压效果

2、线条样式的3种开关

项目demo演示如下所示:
在这里插入图片描述

使用方式:
1、sapid_switch文件夹加入工程,.pro文件中INCLUDEPATH+=sapid_switch
2、

LovelyHeartSwitch* swtch = new LovelyHeartSwitch(this);
swtch->setState(bool);
connect(swtch, SIGNAL(stateChanged(bool)), ...);

项目部分代码如下所示:

#ifndef SAPIDSWITCHBASE_H
#define SAPIDSWITCHBASE_H#include <QObject>
#include <QWidget>
#include <QPainter>
#include <QPainterPath>
#include <QResizeEvent>
#include <QMouseEvent>
#include <QApplication>
#include <QDebug>
#include <QPropertyAnimation>
#include <QMouseEvent>
#include "math.h"class SapidSwitchBase : public QWidget
{Q_OBJECTQ_PROPERTY(double swtch READ getSwtchProg WRITE setSwtchProg)Q_PROPERTY(double press READ getPressProg WRITE setPressProg)
public:explicit SapidSwitchBase(QWidget *parent = nullptr);bool getState() const;bool isChecked() const;virtual void setSuitableHeight(int h);signals:void stateChanged(bool state);public slots:void setState(bool state);void setStateWithoutSignal(bool state);void toggleState();void toggleStateWithoutSignal();void setForeground(QColor color);void setBackground(QColor on, QColor off);void setBorder(QColor color, int size);void setAnimationDuration(int dur);void setAnimationEasingCurve(QEasingCurve curve);protected:virtual void resizeEvent(QResizeEvent *event) override;virtual void mousePressEvent(QMouseEvent *event) override;virtual void mouseMoveEvent(QMouseEvent *event) override;virtual void mouseReleaseEvent(QMouseEvent *event) override;virtual void calculateGeometry();virtual QPainterPath getBgPath() const;virtual QColor getBgColor() const;virtual void startSwitchAnimation();virtual void startSwitchAnimation(double target, int duration);virtual void startNoSwitchAnimation();virtual void setSwtchProgManual(double p);private:double getSwtchProg();void setSwtchProg(double p);double getPressProg();void setPressProg(double p);protected:// 状态bool currentState = false; // 开关状态double aniProgess = 0;     // 当前开关动画值,趋向state,范围0~1QColor colorFg = QColor(255, 250, 250);QColor colorOn = QColor(30, 144, 255);QColor colorOff = Qt::lightGray;QColor colorBd = Qt::transparent;int borderSize = 0; // 四周的间距,算入手势拖拽的位置int switchDuration = 350;QEasingCurve curve = QEasingCurve::InOutCubic;// 几何const double sapid_PI = 3.1415926535;const double GenHao2 = sqrt(2.0);// 滑动手势QPoint pressPos;bool moved = false;bool dragging = false;bool moveTargetState = false; // 滑动的目标状态,等待松手const double stickOnProp = 0.15; // 在两侧贴靠,不收左右滑动手势影响int prevX = 0;double slideLeft, slideRight;  // 滑动左右判定边界// 按压缩放const double pressScale = 0.9; // 按压缩小动画double pressAniProg; // 按下去的动画进度double pressScaleProgress = 1; // 按压缩小进度
};#endif // SAPIDSWITCHBASE_H

源码下载

相关文章:

《QT实用小工具·四十八》趣味开关

1、概述 源码放在文章末尾 该项目实现了各种样式的趣味开关&#xff1a; 1、爱心形状的switch开关&#xff0c;支持手势拖动、按压效果 2、线条样式的3种开关 项目demo演示如下所示&#xff1a; 使用方式&#xff1a; 1、sapid_switch文件夹加入工程&#xff0c;.pro文件中…...

QML进阶(十四) Model-View-Delegate视图框架

文章目录 数据模型(Model)C++数据模型XmlListModelRepeater模型视图框架(View)ListViewTableViewGridViewPathViewMVC(Model-View-Controller)模式将视图系统拆分为模型、视图、控制器三部分,每个部分都相对独立职责单一。模型(model)负责管理视图的数据并对外提供服务。视图(…...

word:三线表的绘制【攻略】

word&#xff1a;三线表的绘制【攻略】 前言版权推荐word&#xff1a;三线表的绘制效果简单方法另外的方法 最后 前言 2024-5-7 18:25:08 以下内容源自《【攻略】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客…...

嵌入式物联网系统软硬件基础知识大全(2)

接口技术 1. Flash存储器 (1)Flash存储器是一种非易失性存储器,根据结构的不同可以将其分为NOR Flash和NAND Flash两种。 (2)Flash存储器的特点: A、区块结构:在物理上分成若干个区块,区块之间相互独立。 B、先擦后写:Flash的写操作只能将数据位从1写成0,不能从…...

Origin拟合EIS(电化学阻抗谱),怎么出来圆圈

1.先导入数据&#xff0c;以点图的形式画出来 2.重要的一步Fitting&#xff0c;按照我这个一步一步来就行 3.将其中的Function选择为Elipse&#xff0c;然后点拟合至最佳条件 4.第三步做完就会发现圆圈已经出来了&#xff0c;然后点OK就行 5.搞定...

Android APP转成launcher

一、背景 使用场景&#xff0c;需要开机的时候&#xff0c;自动启动app&#xff0c;解决方案为将Android app转成 launcher app&#xff0c;可实现效果。 二、实现 在app入口activity 的配置文件&#xff08;AndroidManifest.xml&#xff09;对应位置&#xff0c;添加 <cat…...

【副本向】Lua副本逻辑

副本生命周期 OnCopySceneTick() 子线程每次心跳调用 --副本心跳 function x3323_OnCopySceneTick(elapse)if x3323_g_IsPlayerEnter 0 thenreturn; -- 如果没人进入&#xff0c;则函数直接返回endif x3323_g_GameOver 1 thenif x3323_g_EndTick > 0 thenx3323_CountDown…...

ROS机器人实用技术与常见问题解决

问题速查手册&#xff08;时实更新&#xff09;更加全面丰富的问题手册记录 1.机器人使用GPARTED挂载未分配空间 需要在图型界面下操作&#xff0c;建议使用no machine连接 安装gparted磁盘分区工具, sudo apt-get install gparted -y 启动软件 sudo gparted 点击磁盘/内存…...

Linux学习之IP协议

前言&#xff1a; 在学习IP协议i前&#xff0c;我们其实知道网络协议栈是一层层的&#xff0c;上层封装好之后就传给下层&#xff0c;对于我们正要学习到的TCP协议&#xff0c;在对数据进行封装之后&#xff0c;并不是直接就将数据进行传输&#xff0c;而是交给下一层网络层进…...

Python Dash库:一个Web应用只需几行代码

大家好&#xff0c;在数据科学领域&#xff0c;数据可视化是将数据以图形化形式展示出来&#xff0c;帮助我们更直观地理解数据。Python中有一个非常流行的数据可视化库叫做Dash&#xff0c;Dash以其简洁、高效和强大的功能而闻名&#xff0c;它允许开发者快速构建交互式Web应用…...

用Docker 创建并运行一个MySQL容器

可以在DockerHub官网上荡:mysql - Official Image | Docker Hub 指令是:docker pull mysql; 因为文件比较大可能时间比较长&#xff0c;我是跟着黑马的课走的 课程提供的有文件&#xff0c;我就用已有的资源了。 在tmp目录里放入mysql.tar包 然后cd进去 输入指令:docker lo…...

在Java中如何有效地处理内存泄露

在Java中&#xff0c;处理内存泄露有多种方法&#xff0c;以下是其中三种常见的方法及其原理和适用场景&#xff1a; ## 1. 合理使用垃圾回收机制 Java中的垃圾回收机制&#xff08;Garbage Collection&#xff0c;GC&#xff09;是一种自动化的内存管理技术&#xff0c;它可以…...

值得收藏!修复Windows 10/11中找不到输出或输入设备的五种方法

序言 这篇文章主要关注处理声音输出/输入设备未发现的问题。它提供了许多可行的方法,帮助了许多Windows用户。阅读以下内容以找到你的解决方案。 最近,我将Windows 10更新到21H2,发现我的音频无法工作。当我把鼠标放在任务栏上的声音图标(上面有一个十字图标)上时,它会…...

Slurm运行pytorch深度学习模型(小白版)

Slurm背景&#xff1a; Slurm 是一种开源的作业调度系统&#xff0c;它用于管理大型计算集群中的计算资源和作业。你可以把它想象成一个“交通管制员”&#xff0c;负责管理计算集群中的各种任务&#xff0c;确保它们按照用户设定的规则有序地执行。 Slurm 的主要功能包括&…...

SQL如何利用Bitmap思想优化array_contains()函数

目录 0 问题描述 1 位图思想 2 案例实战 3 小结 0 问题描述 在工作中&#xff0c;我们往往使用array_contains()函数来进行存在性问题分析&#xff0c;如判断某个数是否在某个数组中&#xff0c;但是当表数据量过多&#xff0c;存在大量array_contains()函数时&#xff0c;…...

面试官:打开了一个新窗口,怎么知道这个窗口已经被打开过?

前言 我们现在来想这么一个场景&#xff0c;在掘金的文章管理页打开了一篇文章草稿&#xff0c;然后点击编辑&#xff0c;这个时候打开新标签页 A &#xff0c;再点击一次编辑&#xff0c;打开了标签页 B 。 此时如果你在 A 编辑&#xff0c; B 是感知不到 A 的内容变动的&am…...

机器学习项目实践-基础知识部分

环境建立 我们做项目第一步就是单独创建一个python环境&#xff0c;Python新的隔离环境 创建&#xff1a;python -m venv ml 使用&#xff1a;.\Scripts\activate python -m venv ml 是在创建一个名为 ml 的虚拟环境&#xff0c;这样系统会自动创建一个文件夹ml&#xff0c;…...

CNN卷积神经网络,TensorFlow面试题

目录 CNN卷积神经网络 什么是TensorFlow? 张量是什么 TensorFlow有什么优势?...

Android 官网Ota介绍

构建 OTA 软件包 | Android 开源项目 | Android Open Source Project...

Redis(持久化)

文章目录 1.RDB1.介绍2.RDB执行流程3.持久化配置1.Redis持久化的文件是dbfilename指定的文件2.配置基本介绍1.进入redis配置文件2.搜索dbfilename&#xff0c;此时的dump.rdb就是redis持久化的文件3.搜索dir&#xff0c;每次持久化文件&#xff0c;都会在启动redis的当前目录下…...

终极TFTP服务器解决方案:Tftpd64网络服务一体化配置完全指南 [特殊字符]

终极TFTP服务器解决方案&#xff1a;Tftpd64网络服务一体化配置完全指南 &#x1f680; 【免费下载链接】tftpd64 The working repository of the famous TFTP server. 项目地址: https://gitcode.com/gh_mirrors/tf/tftpd64 Tftpd64是一款轻量级、多线程的网络服务套件…...

Taotoken 助力企业构建内部 AI 助手统一管理平台

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken 助力企业构建内部 AI 助手统一管理平台 当企业内部开始涌现多个 AI 应用时&#xff0c;例如为研发团队配备的代码助手和为…...

VK视频下载终极指南:3种方法轻松保存珍贵回忆

VK视频下载终极指南&#xff1a;3种方法轻松保存珍贵回忆 【免费下载链接】VK-Video-Downloader Скачивайте видео с сайта ВКонтакте в желаемом качестве 项目地址: https://gitcode.com/gh_mirrors/vk/VK-Video-Downloade…...

okbiye 实测:本科生如何用 AI 搞定毕业论文全流程,从选题到格式一步到位

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPT毕业论文 - Okbiye智能写作https://www.okbiye.com/ai/bylw 引言&#xff1a;当本科论文撞上 “时间焦虑”&#xff0c;你需要的不是 “文字裁缝” 凌晨三点的宿舍&#xff0c;电脑屏幕的蓝光映着你通…...

从芯片手册到PCB:SPL06与MPU9250的I2C实战布线要点与防护设计

从芯片手册到PCB&#xff1a;SPL06与MPU9250的I2C实战布线要点与防护设计 在无人机飞控板的设计中&#xff0c;气压传感器SPL06和九轴传感器MPU9250的稳定工作直接关系到飞行姿态控制的精确性。本文将深入探讨这两个关键传感器在PCB布局中的I2C总线设计要点&#xff0c;以及如何…...

硬件供电设计:解决模拟与数字电路噪声干扰的实战指南

1. 项目概述&#xff1a;从一次深夜宕机说起深夜两点&#xff0c;手机突然响起刺耳的告警铃声。一个关键的数据采集节点离线了。我睡眼惺忪地爬起来&#xff0c;远程登录&#xff0c;重启服务&#xff0c;一切如常。但半小时后&#xff0c;它又毫无征兆地“罢工”了。这种间歇性…...

告别C盘焦虑!保姆级教程:在D盘为VS2013安个家(附阿里云/百度网盘下载)

告别C盘焦虑&#xff01;VS2013高效安装与磁盘管理全指南 对于刚接触编程的新手来说&#xff0c;Visual Studio 2013&#xff08;简称VS2013&#xff09;是一个功能强大且友好的开发环境。然而&#xff0c;许多用户在安装过程中常常忽略了一个关键问题——安装路径的选择。本文…...

Taotoken用量看板与账单追溯为团队开发带来的成本管控体验

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken用量看板与账单追溯为团队开发带来的成本管控体验 对于依赖大模型API进行开发的团队而言&#xff0c;成本的可观测与可控性…...

研究生你的救星来了

为了找一个研究方向的核心文献&#xff0c;我要同时打开知网、Web of Science、IEEE Xplore三个数据库&#xff0c;翻几十篇顶刊摘要&#xff0c;还要手动整理每个文献的研究方法、核心结论&#xff0c;熬到凌晨两点&#xff0c;结果还是理不清整个领域的研究脉络。直到上个月朋…...

3步高效转换:AEUX智能插件实现Figma到AE的无缝动画设计

3步高效转换&#xff1a;AEUX智能插件实现Figma到AE的无缝动画设计 【免费下载链接】AEUX Editable After Effects layers from Sketch artboards 项目地址: https://gitcode.com/gh_mirrors/ae/AEUX AEUX插件是一款革命性的设计转换工具&#xff0c;能够将Figma设计稿智…...