第15.34节 PyQt(Python+Qt)入门学习:containers容器类部件QStackedWidget堆叠窗口部件详解

1、概述

StackedWidget堆叠窗口部件为一系列窗口部件的堆叠,对应类为QStackedWidget。QStackedWidget类对应部件为放在堆栈中的多个窗口部件,这些放在堆栈中的窗口部件在界面上只能看到一个窗口。html

2、属性

2.一、概述

在Designer中StackedWidget堆叠窗口部件很是简单,只有2个,以下:
在这里插入图片描述
除了这2个属性外,还有个未在Designer中设置的动态属性count。python

2.二、currentIndex属性

currentIndex属性保存堆叠窗口部件的当前窗口的索引。若是没有当前窗口,则当前索引为-1。默认状况下,此属性值为-1,由于堆最初为空。在Designer中,部件设计拖拽到页面时,会初始化2个页面,此时currentIndex初始值为0。web

能够经过currentIndex()和setCurrentIndex(int index)方法访问该属性,当当前页切换时,会发射currentChanged(int index)信号,参数为新的当前页索引。svg

2.三、currentPageName属性

StackedWidget堆叠窗口部件的currentPageName属性,在对应类QStackedWidget中并无该同名属性,实际上该属性是StackedWidget中当前页面窗口对应部件的名字,经过部件的objectName属性访问。.net

2.四、count属性

count属性保存了堆叠窗口部件中的窗口数量,能够使用count()访问。设计

3、重要方法

3.一、增长页面窗口的方法

能够使用addWidget和insertWidget方法在堆叠窗口部件部件中增长一个页面窗口,调用方法以下:xml

  • int addWidget(QWidget widget)
  • int insertWidget(int index, QWidget widget)
说明:13971127980
  • widget:为新加的页面窗对象,任何QWidget及其派生类的实例均可以
  • index:堆叠窗的位置索引,从0计数,若是超出范围,则在最后面添加
  • 返回值:新增长堆叠窗的索引值
  • 若是堆叠窗口部件部件为空无窗口部件,新加入部件即成为当前页面窗,不然当前页面窗保持不变

3.二、取堆叠窗口部件中指定索引的页面窗口

能够使用widget方法从堆叠窗口部件中取指定索引的堆叠窗实例对象,调用语法以下:htm

-QWidget widget(int index)对象

注意:若是index超出范围则返回None。

3.三、取堆叠窗当前窗口

能够使用currentWidget方法获取当前页面窗口对象,调用语法以下:blog

  • QWidget currentWidget()
注意:若是没有当前窗口则返回None。

3.4 取堆叠窗在部件中的索引顺序

能够使用indexOf方法取页面窗口对象在堆叠窗部件中的索引,调用语法:

  • int indexOf(QWidget widget)

3.五、移除一个堆叠窗

能够使用removeWidget从堆叠窗部件中移除参数指定的对应页面窗口,调用语法以下:

  • removeWidget(QWidget widget)
注意:
  • 因为removeWidget的参数是QWidget 对象,使用起来不是很方便,能够经过widget结合索引方法获取部件再传递给removeWidget使用
  • remove只是移除了索引对应窗口,并无删除窗口实例对象

4、相关信号

除了从父类继承的信号外,QStackedWidget堆叠窗口部件只有两个信号:

  • currentChanged(int index):当前窗口发生了切换时发射该信号,index为新的当前窗口索引
  • widgetRemoved(int index):当从堆叠窗口部件中移除一个窗口时发射此信号。

5、小结

QStackedWidget堆叠窗口部件建立后,能够使用addWidget()方法添加一个窗口到列表的末尾,也能够使用insertWidget()方法将窗口插入到给定的位置。能够使用removeWidget从堆叠窗部件中移除一个页面窗口。堆叠窗部件中的页面窗口数量使用count()方法获取。

屏幕上显示的窗口部件索引由currentIndex()给出,能够使用setCurrentIndex()进行更改。以相似的方式,能够使用currentWidget()获取当前显示的页面窗口部件,若是要更改当前页面窗口能够使用setCurrentWidget()方法进行更改。

每当堆叠窗口中的当前页面窗口更改或从堆叠窗口部件中移除页面窗口时,会分别发出currentChanged()和widgetRemoved()信号。

广告

老猿关于PyQt的付费专栏《使用PyQt开发图形界面Python应用》只须要9.9元,该部分与第十五章的内容基本对应,但一样内容在付费专栏上整体来讲更详细、案例更多。本节内容对应付费专栏的《第二十八章、containers容器类部件QStackedWidget堆叠窗口部件详解》。若是有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!