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

【Qt】QStackedWidget、QRadioButton、QPushButton及布局实现程序首页自动展示功能

效果

在程序启动后,有时不会进入到工作页面,会进入到产品展示页面。
动画如下:

首页展示

页面操作

  • 当不点击时,一秒自动刷新一次;
  • 当点击时,会自动跳转到对应页面;
  • 点击上一页、下一页、及跳转页数,会自动跳转。

UI设计

在这里插入图片描述

示例

注释在代码中,代码可运行。
.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>#include <QMap>
#include <QRadioButton>
#include <QButtonGroup>
namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;// 用于管理选择按钮QMap<int, QRadioButton*>    m_mapRadios;// 加入组QButtonGroup*               m_pBtnGroup;
};#endif // MAINWINDOW_H

.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QDebug>
#include <QLabel>
#include <QFont>#include <QTimer>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);ui->pushButton->setStyleSheet("QPushButton {background-color: #eeeeee; outline: none;}");ui->pushButton_2->setStyleSheet("QPushButton {background-color: #eeeeee; outline: none;}");m_pBtnGroup = new QButtonGroup(this);ui->horizontalLayout->addStretch();// 循环创建按钮for (int var = 0; var < 5; ++var) {QRadioButton* pR = new QRadioButton(QString::number(var+1));m_mapRadios.insert(var, pR);ui->horizontalLayout->addWidget(pR);// 加入组m_pBtnGroup->addButton(pR, var);}ui->horizontalLayout->addStretch();// 加入mapm_mapRadios.value(m_mapRadios.keys().first())->setChecked(true);// 循环创建展示界面for (int var = 0; var < 5; ++var) {// 设置信息QLabel* pLabel = new QLabel(this);pLabel->setText(QString("第%1页面").arg(var+1));pLabel->resize(150, 100);QFont font = pLabel->font();font.setPointSize(23);font.setBold(true);pLabel->setFont(font);pLabel->setStyleSheet("QLabel{color:#ff0000;}");pLabel->move(width()/2, height()/2);ui->stackedWidget->insertWidget(ui->stackedWidget->count(), pLabel);}ui->stackedWidget->setCurrentIndex(0);// 根据点击按钮,同步展示页面connect(m_pBtnGroup, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this, [=](int nId){ui->stackedWidget->setCurrentIndex(nId);});// 定时器QTimer* pTimer = new QTimer(this);connect(pTimer, &QTimer::timeout, this, [=](){// 每一秒更新一次int nIndex = ui->stackedWidget->currentIndex();if(nIndex < 4){ui->stackedWidget->setCurrentIndex(nIndex+1);m_mapRadios.value(nIndex+1)->setChecked(true);}else{ui->stackedWidget->setCurrentIndex(0);m_mapRadios.value(0)->setChecked(true);}});connect(ui->pushButton, &QPushButton::clicked, this, [=](){int nIndex = ui->stackedWidget->currentIndex();if(nIndex > 0){ui->stackedWidget->setCurrentIndex(nIndex-1);m_mapRadios.value(nIndex-1)->setChecked(true);}});connect(ui->pushButton_2, &QPushButton::clicked, this, [=](){int nIndex = ui->stackedWidget->currentIndex();if(nIndex < 4){ui->stackedWidget->setCurrentIndex(nIndex+1);m_mapRadios.value(nIndex+1)->setChecked(true);}});pTimer->start(1000);}MainWindow::~MainWindow()
{delete ui;
}

结论

可将每页显示的改为产品或者介绍图,实现业务。

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

相关文章:

  • 探索 V8 引擎的内部:深入理解 JavaScript 执行的本质
  • 单片机学习11——矩阵键盘
  • Java游戏 王者荣耀
  • 接口测试场景:怎么实现登录之后,需要进行昵称修改?
  • 石油化工专业MR仿真情景教学演练
  • Docker配置Halo搭建个人博客-快速入门
  • 禁止编辑的PPT幻灯片,如何有效保护文件安全?
  • 优化前端性能
  • 1.1 C语言之入门:使用Visual Studio Community 2022运行hello world
  • Android NDK开发中常用的gradle配置
  • 【AUTOSAR-DoIP】通过 DoIP 进行符合 Autosar 的车辆诊断
  • GPIO的使用--操作PE02 PE03 PE04实现开关控制灯泡亮灭
  • 【算法萌新闯力扣】:回文链表
  • php站点伪静态配置(Apache+Linux)
  • Figma 插件学习(二)- 常用属性和方法
  • 基于Flutter的图片浏览器的实现
  • STM32-使用固件库新建工程
  • 商用车量产智能驾驶路径思考
  • flink消费kafka限制消费速率
  • 搭建Appium工具环境
  • 【面经八股】搜广推方向:常见面试题(六)
  • 6.前端--CSS-基础选择器【2023.11.26】
  • Java制作“简易王者荣耀”小游戏
  • 正则表达式例题-PTA
  • 基于Python的南京二手房数据可视化分析的设计与实现
  • 软件特征与类型
  • 无人机遥控器方案定制_MTK平台无人设备手持遥控终端PCB板开发
  • 【C++】静态成员
  • 单片机学习10——独立按键
  • 微服务系列(三)--通过spring cloud zuul过滤器实现线上流量复制