QStackedLayout Class

QStackedLayoutクラスは、一度に1つのウィジェットだけが表示されるウィジェットのスタックを提供します。詳細...

ヘッダー #include <QStackedLayout>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
継承: QLayout

パブリックな型

enum StackingMode { StackOne, StackAll }

プロパティ

パブリック関数

QStackedLayout()
QStackedLayout(QLayout *parentLayout)
QStackedLayout(QWidget *parent)
virtual ~QStackedLayout()
int addWidget(QWidget *widget)
int currentIndex() const
QWidget *currentWidget() const
int insertWidget(int index, QWidget *widget)
void setStackingMode(QStackedLayout::StackingMode stackingMode)
QStackedLayout::StackingMode stackingMode() const
QWidget *widget(int index) const

再実装パブリック関数

virtual void addItem(QLayoutItem *item) override
virtual int count() const override
virtual bool hasHeightForWidth() const override
virtual int heightForWidth(int width) const override
virtual QLayoutItem *itemAt(int index) const override
virtual QSize minimumSize() const override
virtual void setGeometry(const QRect &rect) override
virtual QSize sizeHint() const override
virtual QLayoutItem *takeAt(int index) override

パブリック・スロット

void setCurrentIndex(int index)
void setCurrentWidget(QWidget *widget)

シグナル

void currentChanged(int index)
void widgetRemoved(int index)

詳細説明

QStackedLayoutは、QTabWidget によって提供されるものと同様のユーザー・インターフェースを作成するために使用できます。QStackedLayoutの上に構築された便利なQStackedWidget クラスもあります。

QStackedLayoutには、いくつかの子ウィジェット("ページ")を配置することができます。例えば

    QWidget *firstPageWidget = new QWidget;
    QWidget *secondPageWidget = new QWidget;
    QWidget *thirdPageWidget = new QWidget;

    QStackedLayout *stackedLayout = new QStackedLayout;
    stackedLayout->addWidget(firstPageWidget);
    stackedLayout->addWidget(secondPageWidget);
    stackedLayout->addWidget(thirdPageWidget);

    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->addLayout(stackedLayout);
    setLayout(mainLayout);

QStackedLayoutは、ユーザーがページを切り替えるための本質的な手段を提供しません。これは通常、QComboBox 、またはQStackedLayoutのページのタイトルを保存するQListWidget 。例えば

    QComboBox *pageComboBox = new QComboBox;
    pageComboBox->addItem(tr("Page 1"));
    pageComboBox->addItem(tr("Page 2"));
    pageComboBox->addItem(tr("Page 3"));
    connect(pageComboBox, &QComboBox::activated,
            stackedLayout, &QStackedLayout::setCurrentIndex);

レイアウトの入力時、ウィジェットは内部リストに追加されます。indexOf() 関数は、そのリスト内のウィジェットのインデックスを返します。ウィジェットは、addWidget() 関数を使用してリストの最後に追加するか、insertWidget() 関数を使用して指定されたインデックスに挿入します。removeWidget() 関数は、指定されたインデックスのウィジェットをレイアウトから削除します。レイアウトに含まれるウィジェットの数は、count() 関数を使用して取得できます。

widget() 関数は、指定されたインデックスの位置にあるウィジェットを返す。画面に表示されるウィジェットのインデックスはcurrentIndex() で与えられ、setCurrentIndex() で変更できる。同様に、現在表示されているウィジェットは、currentWidget() 関数で取得でき、setCurrentWidget() 関数で変更できる。

レイアウト内の現在のウィジェットが変更されたり、レイアウトからウィジェットが削除されたりすると、それぞれcurrentChanged() とwidgetRemoved() シグナルが出力されます。

QStackedWidget およびQTabWidgetも参照してください

メンバ型ドキュメント

enum QStackedLayout::StackingMode

この列挙型は、レイアウトが子ウィジェットの可視性をどのように扱うかを指定します。

定数説明
QStackedLayout::StackOne0現在のウィジェットだけが表示されます。これはデフォルトです。
QStackedLayout::StackAll1すべてのウィジェットが表示されます。現在のウィジェットは単に表示されます。

プロパティの説明

[read-only] count : const int

このプロパティは、レイアウトに含まれるウィジェットの数を保持します。

関数にアクセスします:

virtual int count() const override

currentIndex() およびwidget()も参照してください

currentIndex : int

このプロパティは、表示されているウィジェットのインデックス位置を保持する。

現在のウィジェットがない場合、現在のインデックスは-1です。

アクセス関数

int currentIndex() const
void setCurrentIndex(int index)

通知シグナル:

void currentChanged(int index)

currentWidget() およびindexOf()も参照のこと

stackingMode : StackingMode

は、子ウィジェットの表示方法を決めます。

デフォルト値はStackOne です。このプロパティをStackAll に設定すると、グラフィカル・エディタなど、他のウィジェットの上に追加の描画を行うオーバーレイ・ウィジェットのレイアウトを利用できます。

アクセス関数

QStackedLayout::StackingMode stackingMode() const
void setStackingMode(QStackedLayout::StackingMode stackingMode)

メンバ関数ドキュメント

QStackedLayout::QStackedLayout()

親を持たない QStackedLayout を構築します。

この QStackedLayout を有効にするには、後でウィジェットにインストールする必要があります。

addWidget() およびinsertWidget()も参照してください

[explicit] QStackedLayout::QStackedLayout(QLayout *parentLayout)

新しい QStackedLayout を構築し、それを与えられたparentLayout に挿入します。

[explicit] QStackedLayout::QStackedLayout(QWidget *parent)

与えられたparent で新しい QStackedLayout を構築します。

このレイアウトは、parent ウィジェットにインストールされ、その子のジオメトリを管理します。

[virtual noexcept] QStackedLayout::~QStackedLayout()

このQStackedLayout を破棄します。レイアウトのウィジェットは破壊されないことに注意してください。

[override virtual] void QStackedLayout::addItem(QLayoutItem *item)

再実装:QLayout::addItem(QLayoutItem *item)。

int QStackedLayout::addWidget(QWidget *widget)

与えられたwidget をこのレイアウトの最後に追加し、widget のインデックス位置を返します。

この関数が呼ばれる前にQStackedLayout が空の場合、与えられたwidget が現在のウィジェットになります。

insertWidget()、removeWidget()、setCurrentWidget()も参照

[signal] void QStackedLayout::currentChanged(int index)

このシグナルは、レイアウト内の現在のウィジェットが変更されるたびに発行されます。index には新しい現在のウィジェットのインデックスを指定し、新しいウィジェットがない場合は -1 を指定します(例えば、QStackedLayout にウィジェットがない場合など)。

注: プロパティcurrentIndex に対するノーティファイア・シグナル。

currentWidget() およびsetCurrentWidget()も参照してください

QWidget *QStackedLayout::currentWidget() const

このレイアウトにウィジェットがない場合はnullptr を返します。

currentIndex() およびsetCurrentWidget()も参照してください

[override virtual] bool QStackedLayout::hasHeightForWidth() const

再実装:QLayoutItem::hasHeightForWidth() const.

[override virtual] int QStackedLayout::heightForWidth(int width) const

再インプリメント:QLayoutItem::heightForWidth(int) const.

int QStackedLayout::insertWidget(int index, QWidget *widget)

与えられたwidget を、このQStackedLayout の与えられたindex に挿入する。index が範囲外の場合、ウィジェットが追加される(この場合、返されるのはwidget の実際のインデックスである)。

この関数が呼ばれる前にQStackedLayout が空だった場合、与えられたwidget が現在のウィジェットになる。

現在のインデックス以下のインデックスに新しいウィジェットを挿入すると、現在のインデックスがインクリメントされますが、現在のウィジェットは保持されます。

addWidget()、removeWidget()、setCurrentWidget()も参照のこと

[override virtual] QLayoutItem *QStackedLayout::itemAt(int index) const

再実装:QLayout::itemAt(int index) const.

[override virtual] QSize QStackedLayout::minimumSize() const

再実装:QLayout::minimumSize() const.

[slot] void QStackedLayout::setCurrentWidget(QWidget *widget)

現在のウィジェットを指定されたwidget に設定します。新しいカレント・ウィジェットは、このスタック・レイアウトに既に含まれていなければなりません。

setCurrentIndex() およびcurrentWidget()も参照してください

[override virtual] void QStackedLayout::setGeometry(const QRect &rect)

再実装:QLayout::setGeometry(const QRect &r).

[override virtual] QSize QStackedLayout::sizeHint() const

再実装:QLayoutItem::sizeHint() const.

[override virtual] QLayoutItem *QStackedLayout::takeAt(int index)

再インプリメント:QLayout::takeAt(int index).

QWidget *QStackedLayout::widget(int index) const

index指定された位置にウィジェットがない場合はnullptr を返します。

currentWidget() およびindexOf()も参照

[signal] void QStackedLayout::widgetRemoved(int index)

このシグナルは、ウィジェットがレイアウトから削除されるたびに発行されます。ウィジェットのindex がパラメータとして渡されます。

removeWidget()も参照してください

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.