第15.34节 PyQt(Python+Qt)入门学习:containers容器类部件QStackedWidget堆叠窗口部件详解
一、概述
StackedWidget堆叠窗口部件为一系列窗口部件的堆叠,对应类为QStackedWidget。QStackedWidget类对应部件为放在堆栈中的多个窗口部件,这些放在堆栈中的窗口部件在界面上只能看到一个窗口。
二、属性
2.1、概述
在Designer中StackedWidget堆叠窗口部件非常简单,只有2个,如下:

除了这2个属性外,还有个未在Designer中设置的动态属性count。
2.2、currentIndex属性
currentIndex属性保存堆叠窗口部件的当前窗口的索引。如果没有当前窗口,则当前索引为-1。默认情况下,此属性值为-1,因为堆最初为空。在Designer中,部件设计拖拽到页面时,会初始化2个页面,此时currentIndex初始值为0。
可以通过currentIndex()和setCurrentIndex(int index)方法访问该属性,当当前页切换时,会发射currentChanged(int index)信号,参数为新的当前页索引。
2.3、currentPageName属性
StackedWidget堆叠窗口部件的currentPageName属性,在对应类QStackedWidget中并没有该同名属性,实际上该属性是StackedWidget中当前页面窗口对应部件的名字,通过部件的objectName属性访问。
2.4、count属性
count属性保存了堆叠窗口部件中的窗口数量,可以使用count()访问。
三、重要方法
3.1、增加页面窗口的方法
可以使用addWidget和insertWidget方法在堆叠窗口部件部件中增加一个页面窗口,调用方法如下:
- int addWidget(QWidget widget)
- int insertWidget(int index, QWidget widget)
说明:13971127980
- widget:为新加的页面窗对象,任何QWidget及其派生类的实例都可以
- index:堆叠窗的位置索引,从0计数,如果超出范围,则在最后面添加
- 返回值:新增加堆叠窗的索引值
- 如果堆叠窗口部件部件为空无窗口部件,新加入部件即成为当前页面窗,否则当前页面窗保持不变
3.2、取堆叠窗口部件中指定索引的页面窗口
可以使用widget方法从堆叠窗口部件中取指定索引的堆叠窗实例对象,调用语法如下:
-QWidget widget(int index)
注意:如果index超出范围则返回None。
3.3、取堆叠窗当前窗口
可以使用currentWidget方法获取当前页面窗口对象,调用语法如下:
- QWidget currentWidget()
注意:如果没有当前窗口则返回None。
3.4 取堆叠窗在部件中的索引顺序
可以使用indexOf方法取页面窗口对象在堆叠窗部件中的索引,调用语法:
- int indexOf(QWidget widget)
3.5、移除一个堆叠窗
可以使用removeWidget从堆叠窗部件中移除参数指定的对应页面窗口,调用语法如下:
- removeWidget(QWidget widget)
注意:
- 由于removeWidget的参数是QWidget 对象,使用起来不是很方便,可以通过widget结合索引方法获取部件再传递给removeWidget使用
- remove只是移除了索引对应窗口,并没有删除窗口实例对象
四、相关信号
除了从父类继承的信号外,QStackedWidget堆叠窗口部件只有两个信号:
- currentChanged(int index):当前窗口发生了切换时发射该信号,index为新的当前窗口索引
- widgetRemoved(int index):当从堆叠窗口部件中移除一个窗口时发射此信号。
五、小结
QStackedWidget堆叠窗口部件创建后,可以使用addWidget()方法添加一个窗口到列表的末尾,也可以使用insertWidget()方法将窗口插入到给定的位置。可以使用removeWidget从堆叠窗部件中移除一个页面窗口。堆叠窗部件中的页面窗口数量使用count()方法获取。
屏幕上显示的窗口部件索引由currentIndex()给出,可以使用setCurrentIndex()进行更改。以类似的方式,可以使用currentWidget()获取当前显示的页面窗口部件,如果要更改当前页面窗口可以使用setCurrentWidget()方法进行更改。
每当堆叠窗口中的当前页面窗口更改或从堆叠窗口部件中移除页面窗口时,会分别发出currentChanged()和widgetRemoved()信号。
广告
老猿关于PyQt的付费专栏《使用PyQt开发图形界面Python应用》只需要9.9元,该部分与第十五章的内容基本对应,但同样内容在付费专栏上总体来说更详细、案例更多。本节内容对应付费专栏的《第二十八章、containers容器类部件QStackedWidget堆叠窗口部件详解》。如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!
第15.34节 PyQt(Python+Qt)入门学习:containers容器类部件QStackedWidget堆叠窗口部件详解的更多相关文章
- 第15.25节 PyQt(Python+Qt)入门学习:Model/View开发实战--使用QTableView展示Excel文件内容
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 在前面的订阅专栏<第十九章.Model/View开发:QTableView的功能及属 ...
- 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...
- 第15.38节 PyQt(Python+Qt)入门学习:containers容器类部件QDockWidget停靠窗功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QDockWidget类提供了一个可以停靠在QMainWin ...
- 第15.18节 PyQt(Python+Qt)入门学习:Model/View架构中视图Item Views父类详解
老猿Python博文目录 老猿Python博客地址 一.概述 在PyQt图形界面中,支持采用Model/View架构实现数据和界面逻辑分离,其中Model用于处理数据存储,View用于界面数据展现,当 ...
- 第15.33节 PyQt(Python+Qt)入门学习:containers容器类部件QTabWidget选项窗部件简介
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有 ...
- 第15.31节 PyQt(Python+Qt)入门学习:containers容器类部件GroupBox分组框简介
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有 ...
- 第15.29节 PyQt(Python+Qt)入门学习:containers容器类部件QScrollArea滚动区域详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 Scroll Area提供了一个呈现在其他部件上的可滚动区域视图,滚动区域用于显示框架内的 ...
- 第15.28节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTableWidget详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 表格部件为应用程序提供标准的表格显示工具,在表格内可以管理基于行和列的数据项,表格中的最大 ...
- 第15.27节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTreeWidget详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 树部件(Tree Widget)是Qt Designer中 Item Widgets(It ...
随机推荐
- UnixIPC之共享内存
Unix-IPC之共享内存 一,共享内存的概念 共享内存通信技术是一种最快的可用IPC形式,它是针对其他通信机制运行效率低和设计的新型通信技术(其他的如:信号量,管道,套接字等).这种通信技术往往与其 ...
- html中创建并调用vue组件的几种方法
最近在写项目的时候,总是遇到在html中使用vue.js的情况,且页面逻辑较多,之前的项目经验都是使用脚手架等已有的项目架构,使用.vue文件完成组价注册,及组件之间的调用,还没有过在html中创建组 ...
- 《Machine Learning in Action》—— 剖析支持向量机,优化SMO
<Machine Learning in Action>-- 剖析支持向量机,优化SMO 薄雾浓云愁永昼,瑞脑销金兽. 愁的很,上次不是更新了一篇关于支持向量机的文章嘛,<Machi ...
- RPC协议实践入门
RPC 是什么 RPC(Remote Procedure Call) 是一个计算机通信协议.该协议允许运行与一台计算机的程序调用另一个地址空间的程序,是一个通过发送请求-接受回应进行信息交互的系统. ...
- IP 层收发报文简要剖析6--ip_forward 报文转发
//在函数ip_route_input_slow->ip_mkroute_input注册, /* * IP数据包的转发是由ip_forward()处理,该函数在ip_rcv_finish() * ...
- C语言环境总结
1.虚拟内存下C语言环境 2.main函数调用 3.栈调用 每次函数调用,在栈中分配一个栈帧,寄存器通过持有该栈帧的基地址,并上下偏移,访问形参和本地变量, C语言形参为一个字大小,所以通常传指针,这 ...
- Quirc二维码识别模块
背景 师兄要用这个参加集赛,但是说自己C语言不太行,花了一个多小时帮他分析了一下(虽然自己也不太行). 对应模块的GitHub地址:https://github.com/dlbeer/quirc. 记 ...
- 10大排序算法——Java实现
算法与实现 选择排序 算法思想 从数组中选择最小元素,将它与数组的第一个元素交换位置.再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置.不断进行这样的操作,直到将整个数组排序. 动 ...
- [python应用]python简单图片抓取
前言 emmmm python简单图片抓取 1 import requests 2 import threading 3 import queue 4 from subprocess import P ...
- workerman搭建聊天室
首先,先打开官网手册 http://doc.workerman.net/ 根据手册里安装里的提示,完成环境检测,和安装对应的扩展,并把对应的WorkerMan代码包下载解压至根目录 在根目录下创建 ...