天天看点

Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)

目录

​​1、qtabwidget容器控件类​​

​​2、qstackedwidget容器控件类​​

​​3、qdockwidget容器控件类​​

有时候我们可能会面临这样一种情况:所开发的程序包含了太多的控件,导致一个窗口装载不下或者装载的控件太多而不美观。

本篇博文就来解决这个问题,即如何在现有的窗口空间中装载更多的控件。

1、qtabwidget容器控件类

qtabwidget控件提供了一个选项卡和一个页面区域,默认显示第一个选项卡的页面。通过单击各选项卡可以查看对应的页面。如果在一个窗口中显示的输入字段很多,则可以对这些字段进行拆分,分别放置在不同页面的选项卡中。

qtabwidget类中的常用方法如下表所示:

Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)

qtabwidget类中的常用信号如下表所示:

Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)

通过示例,了解qtabwidget容器控件类的使用方法,效果如下所示:

Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)
Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)
Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)

示例中,一个表单的内容分为三组,每一组小控件都显示在不同的选项卡中。顶层窗口是一个qtablwidget控件,将三个选项卡添加进去。

实现代码如下所示:

2、qstackedwidget容器控件类

qstackedwidget是一个堆栈窗口控件,使用qstackedlayout布局,可以填充一些小控件,但同一时间只有一个小控件可以显示。qstackedwidget控件与qtabwidget类似,可以有效地显示窗口中的控件。

通过示例,了解qstackedwidget容器控件类的使用方法,效果如下所示:

Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)
Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)
Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)

示例中,在qstackedwidget对象中填充了三个子控件。每个子控件都可以有自己的布局,包含特定的表单元素。qstackedwidget控件不能在页面之间切换,它与当前选中的qlistwidget控件中的选项进行连接。将qlistwidget的currentrowchanged信号与display()槽函数相关联,从而改变堆叠控件的视图。

3、qdockwidget容器控件类

qdockwidget是一个可以停靠在qmainwindow内的窗口控件,它可以保持在浮动状态或者在指定位置作为子窗口附加到主窗口中。qmainwindow类的主窗口对象保留有一个用于停靠窗口的区域,这个区域在控件的中央周围,如下图所示:

Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)

qdockwidget控件在主窗口内可以移动到新的区域。qdockwidget类中的常用方法如下表所示:

Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)

通过示例,了解qdockwidget容器控件类的使用方法,效果如下所示:

Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)

示例中,顶层窗口是一个qmainwindow对象,qtextedit对象是它的中央小控件,创建可停靠的窗口items,然后,在停靠窗口items内添加qlistwidget对象,最后,将停靠窗口放置在中央小控件的右侧。