效果图如下:

思路是将需要轮播的窗口重载一个类,放入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实现窗口轮播效果相关推荐

  1. Qt之实现图片轮播效果

    一.简述 今天文章讲述的是如何用Qt实现图片轮播的效果,其实我们经常在网页中看到各种广告就是使用了图片轮播,实现小区域内嵌入多个广告的效果. 下面是CSDN页面中两种常见的图片轮播效果.基本上就是定时 ...

  2. 基于qt实现网易云界面轮播效果实现

    基于qt实现网易云音乐的轮播效果 网易云轮播效果 前言 其实主要是想做点记录吧,本人比较喜欢音乐,所以在上周决定在搭建一个网易云的界面框架,不做不知道,做了才发现qt还有很多的框架是自己不太熟悉的. ...

  3. 用JQ去实现一个轮播效果

    前提:用JQ去实现轮播效果一步步的做一个梳理. 首先肯定是轮播的HTML和CSS样式了: <body><div class="pic"><div cl ...

  4. 用原生JS实现3D轮播效果

    用原生JS实现3D轮播效果 实现思路: 先实现无缝轮播效果 添加3D效果 完善代码 增加自动轮播效果 效果如下: 视图中显示3张图片,并通过CSS的透视和旋转实现3D效果,当无任何操作时,图片自动循环 ...

  5. vue 实现无限轮播_vue实现匀速轮播效果

    本文实例为大家分享了vue实现匀速轮播效果的具体代码,供大家参考,具体内容如下 不多描述了 直接代码吧 export default { data(){ return{ screenWidth:'', ...

  6. html的轮播点怎么设置,html轮播效果的实现

    要实现如下图的效果 点击可以选择图片:不点击的时候自动轮播:并且点击完后再次自动轮播. 思路:如同在房子里透过窗子看路过的火车一样,窗子是不动的,但火车是陆续经过窗子的,所以透过窗子可以看到依次看完所 ...

  7. QLabel实现图片轮播效果

    QLabel实现图片轮播效果 QLabel实现图片轮播效果 功能 效果图 代码 表白词 功能 继承QLabel控件实现了图片轮播效果 1.自定义添加图片与图片描述: 2.支持2S自动轮播 3.支持鼠标 ...

  8. 【前端学习笔记】仅用CSS实现图片轮播效果

    效果图 实现原理 swiper-container为窗口 swiper-wrapper用于存放所有图片 swiper-slide用于存放每张图片 通过将图片向左移动实现轮播效果 实现代码 <!D ...

  9. 自定义ViewPager实现轮播效果

    您也可以点此浏览,阅读体验更佳 前言 这种轮播效果多应用于展示电影海报,但是效果并不好,有些没有手势动画,更加没有fling效果.我将ViewPager的源码拷贝出来,做了修改,实现了这两个效果. 效 ...

最新文章

  1. win7x64注册表显卡渲染速度_Geek3D GpuTest GUI(显卡测试软件)下载-Geek3D GpuTest GUI(显卡测试软件)免费版下载v0.7.0...
  2. tcpdump抓取mysql语句
  3. linux设备模型之Class
  4. Dojo-API介绍
  5. VS2008 正式版 下载+ KEY 注册码
  6. 通过界面生成时不存在的数据刷新界面引起的卡顿问题
  7. C#中? 、?? 、?. 、??= 的用法和说明
  8. (多表)关联update 超过两个字段以上
  9. 反射的妙用-类名方法名做参数进行方法调用实例demo
  10. hdu2844 Coins(普通的多重背包 + 二进制优化)
  11. 【BZOJ5457】城市(线段树合并)
  12. 在arcgis中进行拓扑检查
  13. 迅雷 11 11.1.3.1122 ,主界面蜕变为简洁清爽的风格
  14. 极米H5多少流明?采用新亮度标准的极米H5怎么样?性价比高吗?
  15. c语言字符结构数组初始化,C语言结构体数组初始化问题
  16. Neural Approaches to Conversational AI Question Answering(问答,任务型对话,闲聊)
  17. 上进的凡凡,幸运数组,字符串魔法(easy)
  18. 【Fragment】FragmentManager和FragmentTransaction使用
  19. Android 应用程序开发
  20. 为什么说智能传感器必将引领时代前行?

热门文章

  1. OpenGL入门北斗星点绘制
  2. 章子怡对婚姻的憧憬:一生一世!——丹比奴
  3. python爬取起点vip小说章节_python 爬取起点小说vip章节(失败)
  4. 【好奇心驱动力】e-paper电子价签从零开始折腾记录
  5. C# 使用DataMan 数据人扫码枪连接与触发
  6. 乐山市计算机学校蔡老师,各展所长,切磋琢磨——乐山市计算机学校召开班主任经验交流会...
  7. macos 虚拟镜像文件_如何在macOS中使用虚拟文件测试网络或硬盘速度
  8. 人工智能:(C语言)采用状态空间法求解八数码问题
  9. 基于实时计算(flink)打造舆情分析平台——新华智云
  10. Oracle latch: cache buffers chains