一、概述

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堆叠窗口部件详解的更多相关文章

  1. 第15.25节 PyQt(Python+Qt)入门学习:Model/View开发实战--使用QTableView展示Excel文件内容

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 在前面的订阅专栏<第十九章.Model/View开发:QTableView的功能及属 ...

  2. 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...

  3. 第15.38节 PyQt(Python+Qt)入门学习:containers容器类部件QDockWidget停靠窗功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QDockWidget类提供了一个可以停靠在QMainWin ...

  4. 第15.18节 PyQt(Python+Qt)入门学习:Model/View架构中视图Item Views父类详解

    老猿Python博文目录 老猿Python博客地址 一.概述 在PyQt图形界面中,支持采用Model/View架构实现数据和界面逻辑分离,其中Model用于处理数据存储,View用于界面数据展现,当 ...

  5. 第15.33节 PyQt(Python+Qt)入门学习:containers容器类部件QTabWidget选项窗部件简介

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有 ...

  6. 第15.31节 PyQt(Python+Qt)入门学习:containers容器类部件GroupBox分组框简介

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有 ...

  7. 第15.29节 PyQt(Python+Qt)入门学习:containers容器类部件QScrollArea滚动区域详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 Scroll Area提供了一个呈现在其他部件上的可滚动区域视图,滚动区域用于显示框架内的 ...

  8. 第15.28节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTableWidget详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 表格部件为应用程序提供标准的表格显示工具,在表格内可以管理基于行和列的数据项,表格中的最大 ...

  9. 第15.27节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTreeWidget详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 树部件(Tree Widget)是Qt Designer中 Item Widgets(It ...

随机推荐

  1. 直播软件开发之Java音视频解决方案:音视频基础知识

    概念 从信息论的观点来看,描述信源的数据是信息和数据冗余之和,即:数据=信息+数据冗余.音频信号在时域和频域上具有相关性,也即存在数据冗余.将音频作为一个信源,音频编码的实质是减少音频中的冗余. 拟信 ...

  2. Pycharm激活码无偿分享,2020年最新Pycharm永久激活码!

    2020年10月7日08:04:34更新的Pycharm激活码,还热乎着呢,速用~ 如果下边的这个Pycharm激活码过期失效了的话,大家可以关注我的微信公众号:Python联盟,然后回复" ...

  3. 我画着图,FluentAPI 她自己就生成了

    在 Newbe.ObjectVistor 0.3 版本中我们非常兴奋的引入了一个紧张刺激的新特性:使用状态图来生成任意给定的 FluentAPI 设计. 开篇摘要 在非常多优秀的框架中都存在一部分 F ...

  4. 一文带你玩转对象存储COS文档预览

    随着"互联网+"的发展,各行各业纷纷"去纸化",商务合同.会议纪要.组织公文.商品图片.培训视频.学习课件.随堂讲义等电子文档无处不在.而要查看文档一般需要先下 ...

  5. 手写一个Web服务器,极简版Tomcat

    网络传输是通过遵守HTTP协议的数据格式来传输的. HTTP协议是由标准化组织W3C(World Wide Web Consortium,万维网联盟)和IETF(Internet Engineerin ...

  6. java中elasticsearch7.x关于nested类型的api使用,新增+更新

    0,定义esHighClient 1 @Configuration 2 public class RestClientConfig { 3 4 //类似:200.188.22.20:9300,200. ...

  7. Unity CommandBuffer物体轮廓

    1.command buffer具有很高的灵活性,它的作用是预定义一些渲染指令,然后在我们想要执行的时候去执行这些指令(见图1),绿点表示可以在"Forward Rendering Path ...

  8. html页面转PDF、图片操作记录

    前言 日常开发中,我们有可能会碰到从系统中导出数据并打印的需要,打印的格式是常规的表格形式,例如: 本文记录使用js库html2canvas + jspdf实现html转PDF.图片,并下载 画出页面 ...

  9. U盘数据丢失怎么办,还能恢复吗

    有时候在用U盘的时候会出现数据丢失或者U盘无法打开的问题,检查过之后,发现U盘格式变成了RAW,这是怎么回事?遇到这种情况该怎么解决呢? 首先来看看造成u盘格式变为RAW的主要原因: 1.非正常退出u ...

  10. 【xmind converse excel】测试用例定制化小工具

    背景 公司使用jira, jira写测试用例,jira可以通过execl导入进jira, 生成测试用例,但是模板很不统一,如果只是再execl中修改,又觉得及其的麻烦,所以写了一个xmind 转化为定 ...