Windows图形界面(GUI)-QT-C/C++ - QT Stacked Widget

news/2025/2/5 1:51:33/
  • 公开视频 -> 链接点击跳转公开课程
  • 博客首页 -> ​​​链接点击跳转博客主页

目录

一、概述

二、使用场景

1. 多步表单

2. 选项卡界面

3. 状态机界面

三、常见样式

四、属性设置

1. 页面管理

2. 布局管理

3. 信号与槽

五、内容处理

1. 添加页面

2. 移除页面

3. 设置当前页面

4. 获取当前页面

5. 获取指定页面

6. 获取页面总数

7. 页面切换信号

8. 页面移除信号


一、概述

QStackedWidget 是 Qt 框架中的一个重要组件,它允许开发者在同一个窗口区域内堆叠多个子窗口(页面),但一次只显示其中一个。这种设计非常适合需要动态切换界面的场景,如多步表单、选项卡界面、状态机界面等。

二、使用场景

1. 多步表单

在多步表单中,用户需要依次填写多个表单页面。QStackedWidget 可以很好地管理这些表单页面,通过按钮或程序逻辑控制页面的切换,确保用户按照预定的步骤完成表单填写。

2. 选项卡界面

虽然 Qt 提供了 QTabWidget 来实现选项卡界面,但在某些情况下,开发者可能希望自定义选项卡的外观或行为。QStackedWidget 可以通过按钮或其他控件来切换页面,从而实现自定义的选项卡界面。

3. 状态机界面

在状态机界面中,应用程序的不同状态对应不同的界面。QStackedWidget 可以根据应用程序的状态动态切换显示的页面,确保用户界面与应用程序状态保持一致。

三、常见样式

QStackedWidget 是一个堆叠的窗口小部件,它在同一个占位符中显示一个控件,多个控件堆叠在一起,但一次只能显示一个。通过程序或用户操作,可以切换当前显示的控件。

四、属性设置

1. 页面管理

  • 添加页面:使用 addWidget(QWidget *widget) 方法向 QStackedWidget 中添加一个新的页面。

  • 删除页面:使用 removeWidget(QWidget *widget) 方法从 QStackedWidget 中移除一个页面。

  • 重命名页面:虽然 QStackedWidget 本身不提供直接重命名页面的方法,但可以通过自定义数据结构或标签来管理页面名称。

2. 布局管理

在每个页面上,开发者可以添加布局和控件,以构建复杂的用户界面。QStackedWidget 本身不限制页面的布局方式,开发者可以根据需要自由设计。

3. 信号与槽

  • 页面切换:通过 setCurrentWidget(QWidget *widget) 或 setCurrentIndex(int index) 方法切换页面时,可以连接 currentChanged(int index) 信号到自定义槽函数,以处理页面切换时的逻辑。

  • 页面移除:当页面被移除时,widgetRemoved(int index) 信号会被发出,开发者可以连接此信号以处理页面移除后的逻辑。

五、内容处理

1. 添加页面

QWidget *page1 = new QWidget();
QStackedWidget *stackedWidget = new QStackedWidget();
stackedWidget->addWidget(page1);

2. 移除页面

stackedWidget->removeWidget(page1);

3. 设置当前页面

stackedWidget->setCurrentWidget(page1);
// 或者通过索引设置
stackedWidget->setCurrentIndex(0);

4. 获取当前页面

QWidget *currentPage = stackedWidget->currentWidget();
int currentIndex = stackedWidget->currentIndex();

5. 获取指定页面

QWidget *page = stackedWidget->widget(0);

6. 获取页面总数

int pageCount = stackedWidget->count();

7. 页面切换信号

connect(stackedWidget, &QStackedWidget::currentChanged, this, &MyClass::onPageChanged);

8. 页面移除信号

connect(stackedWidget, &QStackedWidget::widgetRemoved, this, &MyClass::onPageRemoved);


http://www.ppmy.cn/news/1569391.html

相关文章

LabVIEW微位移平台位移控制系统

本文介绍了基于LabVIEW的微位移平台位移控制系统的研究。通过设计一个闭环控制系统,针对微位移平台的通信驱动问题进行了解决,并提出了一种LabVIEW的应用方案,用于监控和控制微位移平台的位移,从而提高系统的精度和稳定性。 项目背…

WPF进阶 | WPF 动画特效揭秘:实现炫酷的界面交互效果

WPF进阶 | WPF 动画特效揭秘:实现炫酷的界面交互效果 前言一、WPF 动画基础概念1.1 什么是 WPF 动画1.2 动画的基本类型1.3 动画的核心元素 二、线性动画详解2.1 DoubleAnimation 的使用2.2 ColorAnimation 实现颜色渐变 三、关键帧动画深入3.1 DoubleAnimationUsin…

Maven的单元测试

1. 单元测试的基本概念 单元测试(Unit Testing) 是一种软件测试方法,专注于测试程序中的最小可测试单元——通常是单个类或方法。通过单元测试,可以确保每个模块按预期工作,从而提高代码的质量和可靠性。 2.安装和配…

Git如何避免推送.idea文件夹

.idea 文件夹是 JetBrains 系列 IDE(如 PyCharm、IntelliJ IDEA 等)生成的项目配置文件夹,其中包含了项目的配置信息,例如代码样式、运行配置、版本控制设置等。这些信息对于开发者在 IDE 中高效工作非常重要。 即使在 .gitignor…

全志开发板 视频输入框架

笔记来源于百问网出品的教程。 1.VIN camera驱动框架 • 使用过程中可简单的看成是vin 模块 device 模块af driver flash 控制模块的方式; • vin.c 是驱动的主要功能实现,包括注册/注销、参数读取、与v4l2 上层接口、与各device 的下层接口、中断处…

五、定时器实现呼吸灯

5.1 定时器与计数器简介 定时器是一种通过对内部时钟脉冲计数来测量时间间隔的模块。它的核心是一个递增或递减的寄存器(计数器值)。如果系统时钟为 1 MHz,定时器每 1 μs 计数一次。 计数器是一种对外部事件(如脉冲信号&#xff…

实现总分支结构组织文件共享与高速数据流转

在当今数字化的商业环境中,公司内部的数据交换和文件共享效率对于业务流程的成功至关重要。尤其是那些拥有多个分支机构的大型企业,如何实现高效的文件共享和数据高速流转成为了提升工作效率的关键。本文将探讨如何利用现代技术手段,特别是镭…

初始Linux(7):认识进程(下)

1. 进程优先级 cpu 资源分配的先后顺序,就是指进程的优先权( priority )。 优先权高的进程有优先执行权利。配置进程优先权对多任务环境的 linux 很有用,可以改善系统性能。 还可以把进程运行到指定的CPU 上,这样一来…