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的源码拷贝出来,做了修改,实现了这两个效果. 效 ...
最新文章
- win7x64注册表显卡渲染速度_Geek3D GpuTest GUI(显卡测试软件)下载-Geek3D GpuTest GUI(显卡测试软件)免费版下载v0.7.0...
- tcpdump抓取mysql语句
- linux设备模型之Class
- Dojo-API介绍
- VS2008 正式版 下载+ KEY 注册码
- 通过界面生成时不存在的数据刷新界面引起的卡顿问题
- C#中? 、?? 、?. 、??= 的用法和说明
- (多表)关联update 超过两个字段以上
- 反射的妙用-类名方法名做参数进行方法调用实例demo
- hdu2844 Coins(普通的多重背包 + 二进制优化)
- 【BZOJ5457】城市(线段树合并)
- 在arcgis中进行拓扑检查
- 迅雷 11 11.1.3.1122 ,主界面蜕变为简洁清爽的风格
- 极米H5多少流明?采用新亮度标准的极米H5怎么样?性价比高吗?
- c语言字符结构数组初始化,C语言结构体数组初始化问题
- Neural Approaches to Conversational AI Question Answering(问答,任务型对话,闲聊)
- 上进的凡凡,幸运数组,字符串魔法(easy)
- 【Fragment】FragmentManager和FragmentTransaction使用
- Android 应用程序开发
- 为什么说智能传感器必将引领时代前行?
热门文章
- OpenGL入门北斗星点绘制
- 章子怡对婚姻的憧憬:一生一世!——丹比奴
- python爬取起点vip小说章节_python 爬取起点小说vip章节(失败)
- 【好奇心驱动力】e-paper电子价签从零开始折腾记录
- C# 使用DataMan 数据人扫码枪连接与触发
- 乐山市计算机学校蔡老师,各展所长,切磋琢磨——乐山市计算机学校召开班主任经验交流会...
- macos 虚拟镜像文件_如何在macOS中使用虚拟文件测试网络或硬盘速度
- 人工智能:(C语言)采用状态空间法求解八数码问题
- 基于实时计算(flink)打造舆情分析平台——新华智云
- Oracle latch: cache buffers chains