《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.hqwc.cn/news/679772.html

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

相关文章

网络层协议之 IP 协议

IP 协议格式 4 位版本&#xff1a;此处的取值只有两个&#xff0c;4&#xff08;IPv4&#xff09;和 6&#xff08;IPv6&#xff09;&#xff0c;即指定 IP 协议的版本。 4 位首部长度&#xff1a;描述了 IP 报头多长&#xff0c;IP 报头是变长的&#xff0c;因为报头中的选项部…

三层交换机与防火墙连通上网实验

防火墙是一种网络安全设备&#xff0c;用于监控和控制网络流量。它可以帮助防止未经授权的访问&#xff0c;保护网络免受攻击和恶意软件感染。防火墙可以根据预定义的规则过滤流量&#xff0c;例如允许或阻止特定IP地址或端口的流量。它也可以检测和阻止恶意软件、病毒和其他威…

支付时,中国网联结算与中国银联结算的区别与联系

随着电子商务和互联网支付的快速发展&#xff0c;中国的支付清算市场也呈现出前所未有的繁荣景象。在这个大背景下&#xff0c;中国网联与中国银联作为两大支付清算机构&#xff0c;各自扮演着重要的角色。本文将对两者的区别和联系进行深入探讨&#xff0c;以期对读者有更全面…

渐进淡出背景个人导航页源码(火影版)

渐进淡出背景个人导航页源码&#xff08;火影版&#xff09; 效果图部分源码领取源码下期更新预报 效果图 部分源码 <!DOCTYPE html> <html> <head> <!--小K网 www.xkwo.com --><meta charset"UTF-8"><title>火影版个人主页<…

Scale Decoupled Distillation

摘要 Logit知识蒸馏因其实用性在近年来的研究中越来越受到重视。然而&#xff0c;与特征知识蒸馏相比&#xff0c;它的性能往往较差。在本文中&#xff0c;我们认为现有的基于Logit的方法可能是次优的&#xff0c;因为它们只利用了耦合多个语义知识的全局Logit输出。这可能会把…

Mamba结构的Demo源码解读

文章目录 前言一、mamba结构构建辅助函数解读1、dataclass方法解读2、Norm归一化LayerNormRMSNormRMSNorm源码 3、nn.Parameter方法解读 二、mamba原理二、mamba模型构建1、主函数入口源码解读2、Mamba类源码解读 三、ResidualBlock的mamba结构源码解读四、MambaBlock构成Resid…

我独自升级崛起怎么玩 我独自升级崛起游玩教程分享

《我独自升级&#xff1a;ARISE》是一款预计在 Android、iOS 和 PC 平台推出的动作 RPG&#xff0c;故事内容基于网络漫画版本改编&#xff0c;讲述世界各地出现「次元传送门」&#xff0c;而少部分人类觉醒了可以对抗传送门中怪物的「猎人」能力&#xff0c;玩家可以在故事模式…

Python解释器3.8.2版本安装详细教程

Python解释器提取链接链接&#xff1a; https://pan.baidu.com/s/1eDvwYmUJ4l7kIBXewtN4EA?pwd1111 提取码&#xff1a;1111 演示版本为3.6.8&#xff0c;链接安装包为3.8.2版&#xff0c;包中附加pytharm安装包。 1.双击提取好的python-exe安装文件&#xff0c;会…

类和对象-Python-第一部分

初识对象 使用对象组织数据 class Student:nameNonegenderNonenationalityNonenative_placeNoneageNonestu_1Student()stu_1.name"林军杰" stu_1.gender"男" stu_1.nationality"中国" stu_1.native_place"山东" stu_1.age31print(stu…

天天搞3D模型可视化大屏,怎能不懂点three.js知识。

three.js是一个基于WebGL的JavaScript库&#xff0c;用于在网页上创建交互式的3D图形和动画。对于可视化大屏来说&#xff0c;three.js具有以下价值&#xff1a; 丰富的3D效果&#xff1a;通过three.js&#xff0c;可以实现各种丰富多样的3D效果&#xff0c;如旋转、缩放、平移…

在4*4*4范围内3点结构的占比

在4*4*4的3维空间内取3个点有64*63*62/641664种取法&#xff0c;但在xy&#xff0c;xz&#xff0c;yz面可自由变换的条件下只有29个不同的结构。 结构 数量 1 64 8 64 20 64 第一种情况3个点共两面&#xff0c;图中结构就是1&#xff0c;1绕着z轴旋转得到8&#xff0c…

Twitch赠送暗区突围测试资格 超简单暗区突围测试资格领取教程

作为直播界的领航者&#xff0c;Twitch平台不仅是全球游戏文化直播的中心舞台&#xff0c;更是频繁联袂各路游戏大作&#xff0c;为粉丝们奉上别具匠心的互动盛宴&#xff0c;让观赛的同时解锁诱人的游戏内惊喜。正值《暗区突围》PC版测试的热潮涌动&#xff0c;Twitch乘势加强…