(1)這不是本章節要用到的窗體組件,只是跟著標簽窗體 QTabWidget 一起學了。這也是 QT 的 UI 界面里的最后幾個容器了。而且本類也很簡單。就了解一下它。 本類的繼承關系如下 :
++ UI 設計界面 :
++運行效果 :
(2)本類的源代碼定義于頭文件 qstackedwidget . h :
#ifndef QSTACKEDWIDGET_H
#define QSTACKEDWIDGET_H#include <QtWidgets/qtwidgetsglobal.h>
#include <QtWidgets/qframe.h>QT_REQUIRE_CONFIG(stackedwidget);QT_BEGIN_NAMESPACEclass QStackedWidgetPrivate;/*
The QStackedWidget class provides astack of widgets where only one widget is visible at a time.Detailed Description :
QStackedWidget可用于創建類似于QTabWidget所提供的用戶界面。
它是一個基于QStackedLayout類構建的便捷布局widget。
就像QStackedLayout一樣,QStackedWidget也可以通過構建和填充多個子部件(“頁面”)來創建和填充。QWidget * firstPageWidget = new QWidget;QWidget * secondPageWidget = new QWidget;QWidget * thirdPageWidget = new QWidget;QStackedWidget * stackedWidget = new QStackedWidget;stackedWidget->addWidget( firstPageWidget);stackedWidget->addWidget(secondPageWidget);stackedWidget->addWidget( thirdPageWidget);QVBoxLayout * layout = new QVBoxLayout;layout->addWidget(stackedWidget);setLayout(layout);QStackedWidget 沒有提供用戶切換頁面的固有方法。
這通常通過一個QComboBox或一個QListWidget來實現,這些控件存儲著 QStackedWidget 頁面的標題。例如:QComboBox * pageComboBox = new QComboBox;pageComboBox->addItem(tr("Page 1"));pageComboBox->addItem(tr("Page 2"));pageComboBox->addItem(tr("Page 3"));connect(pageComboBox , &QComboBox::activated,stackedWidget, &QStackedWidget::setCurrentIndex);在填充堆疊型小部件時,這些小部件會被添加到一個內部列表中。indexOf()函數返回該列表中某個小部件的索引。
小部件既可以通過使用addWidget()函數添加到列表的末尾,也可以通過使用insertWidget()函數插入到指定的索引位置。
removeWidget()函數用于從堆疊型小部件中移除一個小部件。
使用count()函數可以獲取堆疊型小部件所包含的小部件數量。widget ()、函數返回位于給定索引位置的控件。
屏幕上顯示的控件的索引由`currentlndex()函數給出,并且可以通過`setCurrentIndex()'函數進行更改。
類似地,當前顯示的控件可以通過`currentWidget()、函數獲取,并通過`setCurrentWidget()函數進行修改。每當堆疊式組件中的當前小部件發生變化或某個小部件被從堆疊式組件中移除時,
將分別發出currentChanged()、和`widgetRemoved()、信號。*/class Q_WIDGETS_EXPORT QStackedWidget : public QFrame
{Q_OBJECT//此屬性保存當前可見小部件的索引位置。如果沒有當前小部件,則當前索引為-1。//默認情況下,此屬性包含值-1,因為堆棧最初為空。Q_PROPERTY(int currentIndexREAD currentIndexWRITE setCurrentIndexNOTIFY currentChanged)//此屬性表示包含在此堆疊小部件中的小部件數量。默認情況下,此屬性包含值為0。Q_PROPERTY(int count READ count)public://Constructs a QStackedWidget with the given parent.explicit QStackedWidget(QWidget * parent = nullptr);~QStackedWidget();// Q_PROPERTY(int currentIndex
// READ currentIndex
// WRITE setCurrentIndex
// NOTIFY currentChanged)int currentIndex () const;QWidget * currentWidget() const;
public Q_SLOTS:void setCurrentIndex (int index);void setCurrentWidget(QWidget * w );
Q_SIGNALS:void currentChanged(int);void widgetRemoved (int index);//每當移除一個小部件時,都會發出此信號。將小部件的索引作為參數傳遞。public :
// Q_PROPERTY(int count READ count)int count() const;//本類代碼很相似于 QTabWidget ,不再注釋了。int indexOf(const QWidget *) const;QWidget * widget (int) const;int insertWidget(int index, QWidget * w);int addWidget( QWidget * w);void removeWidget( QWidget * w);protected:bool event(QEvent * e) override;private:Q_DISABLE_COPY(QStackedWidget)Q_DECLARE_PRIVATE(QStackedWidget)}; //完結 class QStackedWidget : public QFrameQT_END_NAMESPACE#endif // QSTACKEDWIDGET_H
(3)
謝謝