Qt扫盲-QStackedWidget理论总结

news2025/1/17 9:06:40

QStackedWidget理论总结

    • 1. 简述
    • 2. 布局用法
    • 3. 页面切换
    • 4. 常用功能

1. 简述

QStackedWidget和QTabWidget的功能类似,都是为解决大量的控件在一个页面上可能显示不出来,同时呢,这些控件也可以按一定方式分类,我们就可以把这些控件分布在不同的页面,每次用户就操作少量的控件,更方便和科学。这个控件是建立在QStackedLayout类之上的容器,但是在QStackedWidget的内部页面上需要自己手动布局的,并不会自动给你布局。

QStackedWidget 其实就是 一个堆栈的页面,内部的页面是有顺序的,每个页面都是QWIdget类型。
在每个页面上可以采用布局的方式来自适应调整本页面上控件大小和位置,也可以不布局直接用绝对定位的方式固定好本页面上的控件大小位置。

2. 布局用法

    QWidget *firstPageWidget = new QWidget;
    QWidget *secondPageWidget = new QWidget;
    QWidget *thirdPageWidget = new QWidget;

    QPushButton *btn1 = new QPushButton("Btn1", firstPageWidget);
    QPushButton *btn2 = new QPushButton("Btn2", secondPageWidget);
    QPushButton *btn3 = new QPushButton("Btn3", thirdPageWidget);

    //给页面1添加布局并把按钮放到布局里
    QVBoxLayout * layout_1 = new QVBoxLayout;
    firstPageWidget->setLayout(layout_1);
    layout_1->addWidget(btn1);

    //给页面2添加布局并把按钮放到布局里
    QVBoxLayout * layout_2 = new QVBoxLayout;
    secondPageWidget->setLayout(layout_2);
    layout_2->addWidget(btn2);

    //给页面3添加布局并把按钮放到布局里
    QVBoxLayout * layout_3 = new QVBoxLayout;
    thirdPageWidget->setLayout(layout_3);
    layout_3->addWidget(btn3);
        
    QStackedWidget *stackedWidget = new QStackedWidget;
    stackedWidget->addWidget(firstPageWidget);
    stackedWidget->addWidget(secondPageWidget);
    stackedWidget->addWidget(thirdPageWidget);

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(stackedWidget);
    
    //其实隐藏了 this 指针,和 this->setLayout(layout); 等效
    setLayout(layout);

效果其实就像下面
在这里插入图片描述

3. 页面切换

和QTabWidget 有些区别就是,QStackedWidget只是一个堆栈窗口,没有这种切换的外部表现形式,没有外部表现的形式的话,我们一般会用 像 QComboBox (下拉框) 和 QListWidget(列表框)来存储这个 QStackedWidget 的页面标题呀,再通过一定的方式把标题和页面管理起来,一般就是通过 QStackedWidget 的 页面位置关联,也可以通过 QWidget *widget 指针来关联。关联其实就是说,通过QComboBox 或者QListWidget 的某些属性 在一个方式下能和QStackedWidget的页面匹配就行。

下面就是利用的QComboBox 的item 项的位置和 QStackedWidget 的页面位置一一匹配的。来切换的

QComboBox *pageComboBox = new QComboBox;
pageComboBox->addItem(tr("Page 1"));
pageComboBox->addItem(tr("Page 2"));
pageComboBox->addItem(tr("Page 3"));
connect(pageComboBox, QOverload<int>::of(&QComboBox::activated),
              stackedWidget, &QStackedWidget::setCurrentIndex);

效果如下
在这里插入图片描述
我之前的一个用按钮做的菜单切换页面功能,用的索引方式有些不同,我是动态查询的方式完成的,也是用的 QStackedWidget 完成的,只是页面没布局而已。

菜单切换

详见:Qt 自定义侧边菜单栏切换内容页面

4. 常用功能

indexOf() 函数返回该列表中 页面的索引。

可以使用 addWidget() 函数将 页面添加到列表的末尾,也可以使用 insertWidget() 函数插入给定索引处。

removeWidget() 函数从堆叠的 widget 中删除一个 页面。
QStackedWidget中包含的 页面数量可以使用 count() 函数获得。

这个是最常用的:

  • widget() 函数返回给定索引位置的 页面。
  • 屏幕上显示的 页面的索引由currentIndex()给出,可以使用setCurrentIndex()进行更改。以类似的方式,可以使用currentWidget()函数检索当前显示的页面,并使用setCurrentWidget()函数进行更改。

每当QStackedWidget中的当前 页面 发生更改或从QStackedWidget中删除 页面 时,都会分别发出 currentChanged() 和 widgetRemoved() 信号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/93621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA文件基本操作与概念

文件的概念 狭义的文件&#xff1a; 存储在硬盘上的数据&#xff0c;以文件为单位&#xff0c;进行组织&#xff1b;文件夹也叫做"目录"&#xff0c;也是一种特殊的文件(文件里存储的也是文件) 这章笔记的内容都是指狭义的文件 广义的文件&#xff1a; 操作系统…

Docker安装emqx详解(配置SSL证书、开启WSS、鉴权)

EMQX 是一款大规模可弹性伸缩的云原生分布式物联网 MQTT 消息服务器。 1 端口介绍 1883&#xff1a;MQTT 协议端口8084&#xff1a;MQTT/SSL 端口8083&#xff1a;MQTT/WebSocket 端口8080&#xff1a;HTTP API 端口18083&#xff1a;Dashboard 管理控制台端口 2 拉取镜像 …

视频文件转M3U8

前言 前段时间遇到一个播放视频的项目&#xff0c;为了防止登录的用户下载项目的视频&#xff0c;所以需要对视频加密&#xff0c;即使用户下载也不能播放&#xff1b;因为前端采用videojs&#xff0c;最后确认方案是将mp4转m3u8文件格式&#xff0c;来实现视频文件加密播放。下…

公共用房管理系统有哪些管理功能?

数图互通房产管理 数图互通公共用房管理系统的管理功能范围包括: 1、对全部公房进行图形化、电子化、规范、动态化管理。 2、房屋数据定义:可对校区、片区、建筑物、楼层、房间数据进行增删改查&#xff0c;对房间属性数据进行批量修改。 3、档案及多类型附件管理:可对房产的…

对antd-vue输入框的二次封装,显示长度限制,兼容v-decorator和v-model

背景&#xff1a;antd组件中输入框长度限制没有显示&#xff0c;不能像elementUI一样&#xff0c;所以自己来封装实现 目的&#xff1a;对antd-vue输入框的二次封装&#xff0c;显示长度限制&#xff0c;兼容v-decorator和v-model 效果图&#xff1a; 代码&#xff1a; <…

JAVA方向程序设计PTA期末考试小测试

目录 1.方法重载 2.实例成员与类成员 3.static类成员 4.对象的组合 5. 对象的先上转型 6.引用类型&#xff08;数组&#xff09;参数传递 7.三角形类 8.机动车类补全代码 9.数组的引用与元素 10.求最大值 11.接口回调 12*.接口实现-Comparable 13.集体评分 14. 动…

@Windows server 2022安装使用(Workstation)

文章目录1.windows [iso下载](https://www.microsoft.com/zh-cn/evalcenter/evaluate-windows-server-2022)2.准备[workstation](https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html)&#xff08;个人测试&#xff09;3.安装windows server4.wi…

QT 使用第三方库QtXlsx操作Excel表

一直以来&#xff0c;都想学习一下C/C如何操作excel表&#xff0c;在网上调研了一下&#xff0c;觉得使用C/C去操作很麻烦&#xff0c;遂转向QT这边&#xff1b;QT有一个自带的类QAxObject&#xff0c;可以使用他去操作&#xff0c;但随着了解的深入&#xff0c;觉得他并不是很…

打造企业数智化管理新引擎,中国首份指标中台市场研究报告重磅发布!

12月15日&#xff0c;中国首份指标中台市场研究报告正式对外发布。该报告由专注数字化市场的研究咨询机构爱分析联合指标中台代表厂商 Kyligence 共同打造&#xff0c;内容聚焦指标管理和数据分析痛点&#xff0c;全面地梳理了指标中台概念、价值和应用落地方法论&#xff0c;并…

如何快乐地自学Python?阿里讲师用“四点”,说透快乐学习的方法

前言 由于我是自学Python&#xff0c;非科班出身&#xff0c;所以只能分享一些关于我的学习心得&#xff0c;如果有不对地方欢迎指正。 不过非科班出身虽然是一个痛点&#xff0c;但是在工作上&#xff0c;我其实不输给我其他同事&#xff0c;这点我倒是很有自信&#xff0c;…

活用 F12 开发者工具,测试效率原来可以提高这么多

推荐阅读&#xff1a; [内部资源] 想拿年薪30W的软件测试人员&#xff0c;这份资料必须领取~ Python自动化测试全栈性能测试全栈&#xff0c;挑战年薪40W 从功能测试进阶自动化测试&#xff0c;熬夜7天整理出这一份超全学习指南【附网盘资源】 什么是F12? F12开发者工具是…

HTTP详细介绍

HTTP 内容协商 什么是内容协商 在 HTTP 中&#xff0c;内容协商是一种用于在同一 URL 上提供资源的不同表示形式的机制。内容协商机制是指客户端和服务器端就响应的资源内容进行交涉&#xff0c;然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方…

FS32R294JCK0MJDT功能、FS32R294KCK0MJDT特点、FS32R294KAK0MJDT雷达微控制器

S32R294的特点与优势&#xff1a;内置雷达信号加速单元&#xff0c;简称SPT2.8&#xff0c;是专门服务于FMCW雷达的信号处理加速单元。同时&#xff0c;它是16纳米Power架构的处理器&#xff0c;与上一代处理器有非常好的软件兼容性&#xff0c;软件复用率高达80%&#xff1b;S…

【愚公系列】2022年12月 使用NSSM工具部署ELK三件套为Windows服务

文章目录前言一、使用NSSM工具部署ELK三件套为Windows服务1.安装ElasticSearch服务2.安装Kibana服务3.安装Logstash服务4.验证ELK服务前言 nssm是一个服务封装程序&#xff0c;它可以将普通exe程序封装成服务&#xff0c;实现开机自启动&#xff0c;同类型的工具还有微软自己的…

计算机硬件基础

目录 一、计算机组成原理 1.计算机的组成 输入设备&#xff1a; 输出设备&#xff1a; 存储器&#xff1a; 运算器&#xff1a; 控制器&#xff1a; 2.总线 总线 DMA总线 二、多级存储 1.三级存储结构 Cache 主存储器 辅助存储器 2.地址空间 三、CPU工作原理概述…

Java培训Mycat全局序列

全局序列 1、本地文件方式 不推荐&#xff0c;如在Mycat主机中用本地文件方式创建全局序列&#xff0c;当这台机器宕机时会出现&#xff0c;序列文件丢失&#xff0c;造成序列冲突问题 Java培训Mycat全局序列 2、数据库方式 2.1、原理 利用数据库一个表 来进行计数累加。…

干货 | 数字经济创新创业——软件研究

下文整理自清华大学大数据能力提升项目能力提升模块课程“Innovation & Entrepreneurship for Digital Economy”&#xff08;数字经济创新创业课程)的精彩内容。主讲嘉宾&#xff1a;Kris Singh: CEO at SRII, Palo Alto, CaliforniaVisiting Professor of Tsinghua Unive…

计算机毕设Python+Vue校园食堂订餐系统(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【IntelliJ IDEA技巧】:如何生成.jar文件

问题描述&#xff1a; 由于上交给上级或者特殊使用&#xff0c;我们需要将jar文件提交给上级&#xff0c;那就是要学会如何生成jar文件&#xff0c;个人找了很久解决了问题&#xff0c;主要是网上太多参差不齐的回答&#xff0c;我觉着很浪费时间&#xff0c;当然有些也是比较好…

MySQL zip安装包 的安装过程

以前怎么安装的Mysql已经不记得了&#xff0c;感觉就是傻瓜式安装。这次又要用上了&#xff0c;发现和原先的记忆完全不一样了&#xff0c;也许是自己全忘了。这次记在这里&#xff0c;日后好参照&#xff0c;有需要的同学也可直接拿去。 1.下载&#xff0c;直接去官网吧 MyS…