Qt实现窗口轮播效果
效果图如下:
思路是将需要轮播的窗口重载一个类,放入QStackedWidget中,通过定时器和QPushButton控制QStackedWidget中的窗口切换实现轮播效果。
重载一个窗口类命名ImageItemWidget
轮播窗口类参数设置
class ImageInfo
{
public:QString logoPath; //头像QString nickName; //头像说明int64_t score; //颜值
public:void clear() {logoPath.clear();nickName.clear();score = 0;}
};
轮播窗口类参数导入
void ImageItemWidget::setValueAndStyle(ImageInfo pEvent)
{QFontMetrics fm(ui.label_uname->font());QString strElidedText = fm.elidedText(pEvent.nickName, Qt::ElideRight, 90, Qt::TextShowMnemonic);ui.label_uname->setText(strElidedText);QString grade = QString::number(pEvent.score);ui.label_grade->setText(QStringLiteral("颜值:%1").arg(grade));QString _logoPath = QStringLiteral(":/image/qrc/image/%1").arg(pEvent.logoPath);QPixmap logo(_logoPath);if (!logo.isNull()) {ui.label_frame->setScaledContents(true);ui.label_frame->setPixmap(logo);}}
创建显示轮播窗口类ImageCarouselWidget
//数据for (int i = 0; i < 5; i++){ImageInfo _pInfo;_pInfo.nickName = QStringLiteral("美女%1").arg(i + 1);_pInfo.logoPath = QStringLiteral("%1.jpg").arg(i + 1);_pInfo.score = 10000 + i * 1000;m_imageItem = new ImageItemWidget();m_imageItem ->setValueAndStyle(_pInfo);ui.stackedWidget->insertWidget(i, m_annualItem);m_ImageInfo.insert(i, _pInfo);}
轮播按钮创建
void ImageCarouselWidget::initChangeButton()
{m_ChangeButtonGroup = new QButtonGroup();int listCount = m_ImageInfo.count();ui.horizontalLayout->addStretch();for (int i = 0; i < listCount; i++){//初始化轮播按钮QPushButton* pButton = new QPushButton;pButton->setFixedSize(QSize(13, 13));pButton->setCheckable(true);pButton->setStyleSheet("QPushButton{border-image:url(:/ToolTip/qrc/unselect1.png);}\QPushButton:checked{border-image:url(:/ToolTip/qrc/select1.png);}");m_ChangeButtonGroup->addButton(pButton, i);m_pChangeButtonList.append(pButton);ui.horizontalLayout->addWidget(pButton);}ui.horizontalLayout->addStretch();ui.horizontalLayout->setSpacing(20);ui.horizontalLayout->setMargin(0);//默认第一个显示if (m_pChangeButtonList.size() > 0) {m_pChangeButtonList[0]->setChecked(true);}connect(m_ChangeButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(sltSwitchButtonClicked(int)));
}
轮播按钮槽函数切换窗口实现
void ImageCarouselWidget::sltSwitchButtonClicked(int index)
{initChangeButtonCheckable(index);
}void ImageCarouselWidget::initChangeButtonCheckable(int index)
{if (m_pChangeButtonList.size() > index) {m_pChangeButtonList[index]->setChecked(true);}m_carouselTimer.stop();m_carouselTimer.start(3000);ui.stackedWidget->setCurrentIndex(index);
}
创建并初始化定时器
m_carouselTimer.setTimerType(Qt::PreciseTimer);connect(&m_carouselTimer, &QTimer::timeout, this, &vAnnualEvent::sltCarouselTimerOut);m_carouselTimer.start(3000);
定时器槽函数控制窗口轮播
void ImageCarouselWidget::sltCarouselTimerOut()
{int pIndex= ui.stackedWidget->currentIndex();int pCount = ui.stackedWidget->count();// 获取下一个需要显示的页面索引++pIndex;// 当需要显示的页面索引大于等于总页面时,切换至首页if (pIndex>= pCount) pIndex= 0;initChangeButtonCheckable(pIndex);ui.stackedWidget->setCurrentIndex(pIndex);
}
Qt实现窗口轮播效果相关推荐
- Qt之实现图片轮播效果
一.简述 今天文章讲述的是如何用Qt实现图片轮播的效果,其实我们经常在网页中看到各种广告就是使用了图片轮播,实现小区域内嵌入多个广告的效果. 下面是CSDN页面中两种常见的图片轮播效果.基本上就是定时 ...
- 基于qt实现网易云界面轮播效果实现
基于qt实现网易云音乐的轮播效果 网易云轮播效果 前言 其实主要是想做点记录吧,本人比较喜欢音乐,所以在上周决定在搭建一个网易云的界面框架,不做不知道,做了才发现qt还有很多的框架是自己不太熟悉的. ...
- 用JQ去实现一个轮播效果
前提:用JQ去实现轮播效果一步步的做一个梳理. 首先肯定是轮播的HTML和CSS样式了: <body><div class="pic"><div cl ...
- 用原生JS实现3D轮播效果
用原生JS实现3D轮播效果 实现思路: 先实现无缝轮播效果 添加3D效果 完善代码 增加自动轮播效果 效果如下: 视图中显示3张图片,并通过CSS的透视和旋转实现3D效果,当无任何操作时,图片自动循环 ...
- vue 实现无限轮播_vue实现匀速轮播效果
本文实例为大家分享了vue实现匀速轮播效果的具体代码,供大家参考,具体内容如下 不多描述了 直接代码吧 export default { data(){ return{ screenWidth:'', ...
- html的轮播点怎么设置,html轮播效果的实现
要实现如下图的效果 点击可以选择图片:不点击的时候自动轮播:并且点击完后再次自动轮播. 思路:如同在房子里透过窗子看路过的火车一样,窗子是不动的,但火车是陆续经过窗子的,所以透过窗子可以看到依次看完所 ...
- QLabel实现图片轮播效果
QLabel实现图片轮播效果 QLabel实现图片轮播效果 功能 效果图 代码 表白词 功能 继承QLabel控件实现了图片轮播效果 1.自定义添加图片与图片描述: 2.支持2S自动轮播 3.支持鼠标 ...
- 【前端学习笔记】仅用CSS实现图片轮播效果
效果图 实现原理 swiper-container为窗口 swiper-wrapper用于存放所有图片 swiper-slide用于存放每张图片 通过将图片向左移动实现轮播效果 实现代码 <!D ...
- 自定义ViewPager实现轮播效果
您也可以点此浏览,阅读体验更佳 前言 这种轮播效果多应用于展示电影海报,但是效果并不好,有些没有手势动画,更加没有fling效果.我将ViewPager的源码拷贝出来,做了修改,实现了这两个效果. 效 ...
最新文章
- JAVA SE学习day_03:包装类、文件操作——file
- 串灯控制盒去掉怎么接_单双向可控硅好坏怎么判断
- lightbox自定义图片大小的实现
- 服务器系统给U盘盘符,五大步骤解决U盘插入电脑盘符不显示问题
- 对于怎么理解js中Event Loop,你可以看这篇文章
- Layer:layui.util.timeAgo 使用
- 不加群提取群成员_QQ群引流推广怎么做
- Crontab定时任务表达式
- ibm x3850装oracle,Oracle数据库服务器:x3850 X5
- SmartSVN忽略文件与文件夹的设置
- .NET C# + ECharts 初学笔记 后台加载统计图表数据 - 简单示例
- Prolog入门教程(完整版+专家系统案例)
- app安全评估报告,如何搞定呢?!
- rust Vec 常用操作
- 用request获取请求地址Ip
- 【瑞芯微Rockchip Linux平台】SoftAp需求实现(3)动态获取BT Mac地址并更新beacon帧中的mac信息
- java关于数组的下标越界
- 压缩算法(二)——QuickLZ算法
- ChatGPT玩法大全火了,一键复制就能get同款效果:脱口秀张口就来,还能扮演哈利波特...
- 软考初级程序员—计算机基础试题与解析(待补充)
热门文章
- 找出列表中的偶数位元素
- android如何从json字符串中取自己想要的数据
- 城市空气质量分析与预测
- CDN: trunk URL couldn't be downloaded
- 10个免费的顶级跨浏览器测试工具
- OpenGL学习随笔(三)——2022.1.24
- 大型网站技术架构演进
- Invalid content was found starting with element ‘{“http://maven.apache.org/POM/4.0.0“:dependency}‘.
- Cell Reports : 人脑中的湍流状动力学
- 区块链系列----Pos大有可为