《QT实用小工具·六十一》带动画的三角形指示箭头

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

该项目实现了一个带动画效果的三角形指示箭头,项目demo演示如下所示:
在这里插入图片描述

用法
interestingindicate.h interestingindicate.cpp 放到工程中,直接使用即可。

注意:建议绝对布局,手动指定 widget 的边界,上下(第一项top和最后一项bottom,不包括spacing),左边(全部项的最左边-指示条宽度)。

项目部分代码如下所示:

#ifndef INTERESTINGINDICATE_H
#define INTERESTINGINDICATE_H#include <QObject>
#include <QWidget>class InterestingIndicate : public QWidget
{Q_OBJECTQ_PROPERTY(int line1 READ getLine1 WRITE setLine1)Q_PROPERTY(int line2 READ getLine2 WRITE setLine2)Q_PROPERTY(int line3 READ getLine3 WRITE setLine3)
public:InterestingIndicate(QWidget *parent = nullptr);enum TriangleLIne{TL_Left,TL_TopRight,TL_BottomRight};/// 根据控件调整自己的位置void setTopAndBottom(QWidget* top, QWidget* bottom);/// 设置三角形边长的尺寸void setTriangleSize(int size);/// 设置绘制的颜色void setColor(QColor c);/// 设置总数量void setTotalCount(int count);/// 设置每两个项目之间的spacing(不包括上下两边外面的)void setItemSpacing(int spacing);/// 设置索引(不用动画)void setCurrentIndex(int index);/// 设置缩影(带动画的)void moveIndicate(int index);/// 当前指向的索引int currentIndicateIndex() const;protected:void paintEvent(QPaintEvent *) override;signals:public slots:private:/// 获取某一个index的中心点Y坐标int getCenterYByIndex(int index);/// 根据中间点,获取线绘制的Yint getLineTopByCenterY(int centerY, TriangleLIne line);/// 设置指示条的中心点Yvoid setCenterY(int y);private:int getLine1();void setLine1(int x);int getLine2();void setLine2(int x);int getLine3();void setLine3(int x);int line1 = 0;int line2 = 0;int line3 = 0;private:int triangleSize = 16;QColor lineColor = Qt::black;int totalCount = 0;int itemSpacing = 0;int currentIndex = -1;int currentY = -1;int aniPV = 0;
};#endif // INTERESTINGINDICATE_H

源码下载

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

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

相关文章

git stash技巧

1.缘由 有时代码写到一半有新bug要修复&#xff0c;这时可以先暂存当前代码&#xff08;使用git stash&#xff09;&#xff0c;修复完bug再回到原先的暂存文件&#xff08;使用git stash pop&#xff09;继续工作。 2.git stash的常用命令&#xff1a; &#xff08;1&#x…

【大数据】containered学习笔记

文章目录 1. Containerd安装1.1 YUM方式安装 【后端&网络&大数据&数据库目录贴】 1. Containerd安装 1.1 YUM方式安装 获取YUM源 获取阿里云YUM源 wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 查…

华为车BU迈入新阶段,新任CEO对智能车的3个预判

作者 |张马也 编辑 |德新 4月24日&#xff0c;北京车展前夕&#xff0c;华为召开了新一年的智能汽车解决方案新品发布会。 这次发布会&#xff0c;也是华为智能汽车解决方案BU&#xff08;简称「车BU」&#xff09;CEO 靳玉志的公开首秀。 一开场&#xff0c;靳玉志即抛出了…

BACnet转MQTT网关智联楼宇json格式自定义

智能建筑的BACnet协议作为楼宇自动化领域的通用语言&#xff0c;正逐步迈向更广阔的物联网世界。随着云计算和大数据技术的飞速发展&#xff0c;如何将BACnet设备无缝融入云端生态系统&#xff0c;成为众多楼宇管理者关注的焦点。本文将以一个实际案例&#xff0c;揭示BACnet网…

Clion STM32CubeMX 项目

系列文章目录 前言 最后修改 2024 年 4 月 16 日 操作系统&#xff1a;Windows / Linux / macOS 所需工具 STM32CubeMX、GNU ARM 工具链 项目格式&#xff1a; CMake 兼容配置&#xff1a; OpenOCD 运行与调试/嵌入式 GDB 服务器 对于以 STM32 板卡为目标的嵌入式项目&#xf…

分布式与一致性协议之ZAB协议(七)

ZAB协议 ZAB协议:如何处理读写请求 你应该有这样的体会&#xff0c;如果你想了解一个网络服务&#xff0c;执行的第一个功能肯定是写操作&#xff0c;然后才会执行读操作。比如&#xff0c;你要了解ZooKeeper&#xff0c;那么肯定会在zkClient.sh命令行中执行写操作(比如crea…

如何购买阿里云99计划的ECS云服务器?99元购买阿里云2核2G3M服务器教程

阿里云助力中小企业和开发者无忧上云的“99计划”中有两款性价比超高的ECS云服务器&#xff0c;2026年3月31日活动结束前新购和续费价格一样。 其中个人和企业新老用户同享的2核2G3M服务器仅需99元/年&#xff08;续费同价&#xff09;&#xff0c;企业新老用户同学的2核4G5M仅…

Python 框架安全:Django SQL注入漏洞测试.(CVE-2021-35042)

什么是 Django 框架 Django 是一个用 Python 编写的 Web 应用程序框架。它提供了许多工具和库&#xff0c;使得开发 Web 应用程序变得更加容易和高效。Django 遵循了“MTV”&#xff08;模型-模板-视图&#xff09;的设计模式&#xff0c;将应用程序的不同组件分离开来&#x…

Leetcode 637:二叉树的层平均值

给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 思路&#xff1a;其实就是计算每一层的和&#xff0c;再求平均值。 public static List<Double> averageOfLevels(TreeNode root) {List<Doubl…

《从零开始,搭建一个简单的UVM验证平台》实操

最近的工作中需要用UVM平台去仿真软件同事写的C程序&#xff0c;虽然只要用EDA同事已经搭好的UVM平台稍微改改就行&#xff0c;但对于我这种从未接触过UVM甚至都没用过System Verilog的纯FPGA工程师来说还是很有难度的&#xff0c;因为我对这方面一点概念都没有。 基于此&…

[Kubernetes] 安装KubeSphere

选择4核8G&#xff08;master&#xff09;、8核16G&#xff08;node1&#xff09;、8核16G&#xff08;node2&#xff09; 三台机器&#xff0c;按量付费进行实验&#xff0c;CentOS7.9安装Docker安装Kubernetes安装KubeSphere前置环境: nfs和监控安装KubeSphere masternode1no…

整理好了!2024年最常见 100 道 Java基础面试题(三十五)

上一篇地址&#xff1a;整理好了&#xff01;2024年最常见 100 道 Java基础面试题&#xff08;三十四&#xff09;-CSDN博客 六十九、接口是否可以继承接口&#xff1f; 在Java中&#xff0c;接口可以继承其他接口。这种继承关系允许一个接口扩展另一个接口中定义的常量和抽象…

STL——函数对象和谓词

函数对象 概念 重载函数调用操作符()的类&#xff0c;其对象常被称为仿函数 函数对象使用重载的()时&#xff0c;行为类似函数调用&#xff0c;也叫做仿函数 本质上仿函数是一个类&#xff0c;并不是一个函数 函数对象使用 函数对象在使用时&#xff0c;可以像普通函数一样…

【QT学习】14.线程学习

一。线程了解 线程是计算机科学中的一个重要概念&#xff0c;它是操作系统能够进行运算调度的最小单位。线程是进程中的一个执行流&#xff0c;一个进程可以包含多个线程。与进程相比&#xff0c;线程更轻量级&#xff0c;可以更高效地利用计算机资源。 线程有以下几个特点&…

Spring Boot应用部署 - Tomcat容器替换为Undertow容器

Tomcat容器替换为Undertow容器 要在Spring Boot应用中将默认的Tomcat容器替换为Undertow容器&#xff0c;可以按照以下步骤进行操作&#xff1a; Maven项目配置 排除Tomcat依赖&#xff1a;首先&#xff0c;你需要从spring-boot-starter-web依赖中排除Tomcat。在你的pom.xml文…

OpenCV|简单绘制一个矩形

OpenCV中的rectangle() 为绘制矩形命令&#xff0c;形式如下&#xff1a; # (img: cv2.typing.MatLike, pt1: cv2.typing.Point, pt2: cv2.typing.Point, color: cv2.typing.Scalar, thickness: int ..., lineType: int ..., shift: int ...)cv2.rectangle(img, pt1, pt2, …

Dynamic Extraction of Subdialogues for Dialogue Emotion Recognition

对话情感识别的子对话动态提取 摘要1. 介绍2 相关工作2.1 对话上下文建模2.2 常识知识 3 方法3.1 问题定义3.2 模型概述3.3 特征提取模块3.4 依赖性建模3.5 交互式子对话提取模块3.6 重要性增强的多头自注意力模块3.7 子对话框主题提取模块3.8. 分类模块 四、实验4.1 数据集4.1…

含义:理财风险等级R1、R2、R3、R4、R5

理财风险等级R1、R2、R3代表什么&#xff0c;为什么R1不保本&#xff0c;R2可能亏损 不尔聊投资https://author.baidu.com/home?frombjh_article&app_id1704141696580953 我们购买理财产品的时候&#xff0c;首先都会看到相关产品的风险等级。风险等级约定俗成有5级&…

Java进阶07集合(续)

Java进阶07 集合&#xff08;续&#xff09; 一、数据结构&#xff08;树&#xff09; 1、关于树 1.1 相关概念 节点&#xff1a;树中每个单独的分支 节点的度&#xff1a;每个节点的子节点数量 树高&#xff1a;树的总层数 根节点&#xff1a;最顶层节点 左子节点&…

Python专题:三、数字和运算(2)

目录 一、数学运算 二、赋值运算 一、数学运算 1、运算符号 加法 减法- 乘法* 除法/ 计算机中浮点数表示有精度限制&#xff0c;Python有限&#xff0c;所以近似取数 2、除法取整// Python2中 整数/整数 值为整数 Python3中 整数/整数 整数or浮点数 //计算除法对结果取…