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

《QT实用小工具·四十九》QT开发的轮播图

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

该项目实现了界面轮播图的效果,包含如下特点:
左右轮播
鼠标悬浮切换,无需点击
自动定时轮播
自动裁剪和缩放不同尺寸图片
任意添加、插入、删除
单击事件,支持索引和自定义文本
界面美观,圆角、阴影、卡片内偏移、非线性并行动画、渐变切换等
与其他的轮播图不同,在图片切换的同时,每张图片内部还有一丝丝的“漂移”效果。除了带来灵活的视觉效果外,还使得左右缩略图露出的部分可以很好的显示偏向中心的内容。

另外,在两图交替的那一瞬间,采用了很微妙的渐变消失特效,从而不会产生瞬间变换的闪屏感觉,这是其它轮播图都未能做到的。

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

项目部分代码如下所示:

#include <QPainter>
#include <QPainterPath>
#include "sidehidelabel.h"SideHideLabel::SideHideLabel(QWidget *parent) : QLabel(parent)
{
}SideHideLabel *SideHideLabel::copy(const SideHideLabel *other)
{SideHideLabel* label = new SideHideLabel(other->parentWidget());label->setGeometry(other->geometry());label->sideOffset = other->sideOffset;label->startX = other->startX;label->radius = other->radius;label->pixmap = other->pixmap;return label;
}void SideHideLabel::setPixmap(const QPixmap &pixmap, double sideMaxOffset)
{
//    QLabel::setPixmap(pixmap);this->pixmap = pixmap;this->startX = -sideMaxOffset; // 单边的长度
}double SideHideLabel::getMaxOffset() const
{return -startX;
}void SideHideLabel::paintEvent(QPaintEvent *e)
{
//    QLabel::paintEvent(e);
//    return ;QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);painter.setRenderHint(QPainter::SmoothPixmapTransform);QPainterPath path;path.addRoundedRect(rect(), radius, radius);painter.setClipPath(path);QPixmap newPixmap = pixmap.scaledToHeight(this->height(), Qt::FastTransformation);painter.drawPixmap(int(startX + sideOffset), 0,newPixmap.width(), newPixmap.height(),newPixmap);
}void SideHideLabel::setSideOffset(double of)
{this->sideOffset = of;update();
}double SideHideLabel::getSideOffset() const
{return sideOffset;
}

源码下载

http://www.lryc.cn/news/342038.html

相关文章:

  • uniapp 自定义 App启动图
  • 39-1 Web应用防火墙 - WAF应用程序层绕过
  • 【1】STM32·FreeRTOS·新建工程模板【一步到位】
  • linux下sd卡的备份与还原
  • Spring Boot项目中集成Logback作为日志框架-笔记
  • Python_GUI框架 PyQt 与 Pyside6的介绍
  • Github入门
  • 【Web漏洞指南】XSS漏洞详细指南
  • Labels and Databases for Mac:强大的标签与数据库管理工具
  • 视频降噪算法 Meshflow 介绍
  • 情感类ppt素材
  • 专家解读 | NIST网络安全框架(1):框架概览
  • 【NodeMCU实时天气时钟温湿度项目 3】连接SHT30传感器,获取并显示当前环境温湿度数据(I2C)
  • Unity3D DOTween
  • 罗宾斯《管理学》第13版/教材讲解/考研真题视频课程/网课
  • docker-compose启动mysql4.7环境搭建
  • StarryCoding入门教育赛2 题解 C++代码(推荐学习)
  • 【JAVA进阶篇教学】第九篇:MyBatis-Plus用法介绍
  • 实时音视频通信的主要矛盾及解决方法
  • 【Delphi 爬虫库 4】使用封装好的 XML 解析库对 XML 数据进行解析
  • Flask简介
  • 神经网络中的归一化
  • 《从Paxos到Zookeeper》——第四、七章:基本概念及原理
  • 网络演进技术演进:裸纤专线、SDH、MSTP+、OTN、PTN、IP-RAN
  • MMC设备
  • 图片浏览器-PicView
  • 一些零碎小知识
  • 2.2 Java全栈开发前端+后端(全栈工程师进阶之路)-前端框架VUE3-基础-Vue基本语法
  • (Arxiv,2024)Mind the Modality Gap:通过跨模态对齐建立遥感视觉语言模型
  • 区块链 | 一文了解 NFT 的生态系统(上)