天天看點

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對象,最後,将停靠視窗放置在中央小控件的右側。