QStackedWidget Class
QStackedWidget クラスは、一度に 1 つのウィジェットのみが表示されるウィジェットのスタックを提供します。詳細...
| ヘッダー: | #include <QStackedWidget> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 継承元: | QFrame |
プロパティ
- count : int
- currentIndex : int
パブリック関数
| QStackedWidget(QWidget *parent = nullptr) | |
| virtual | ~QStackedWidget() |
| int | addWidget(QWidget *widget) |
| int | count() const |
| int | currentIndex() const |
| QWidget * | currentWidget() const |
| int | indexOf(const QWidget *widget) const |
| int | insertWidget(int index, QWidget *widget) |
| void | removeWidget(QWidget *widget) |
| QWidget * | widget(int index) const |
パブリック・スロット
| void | setCurrentIndex(int index) |
| void | setCurrentWidget(QWidget *widget) |
シグナル
| void | currentChanged(int index) |
(since 6.9) void | widgetAdded(int index) |
| void | widgetRemoved(int index) |
再実装された保護関数
| virtual bool | event(QEvent *e) override |
詳細な説明
QStackedWidget を使用すると、QTabWidget が提供するものと類似したユーザーインターフェースを作成できます。これは、QStackedLayout クラスを基盤として構築された、利便性の高いレイアウトウィジェットです。
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 には、ユーザーがページを切り替えるための固有の機能は備わっていません。これは通常、QStackedWidget の各ページのタイトルを格納するQComboBox またはQListWidget を通じて行われます。例えば:
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() 関数は、指定されたインデックス位置にあるウィジェットを返します。画面に表示されているウィジェットのインデックスはcurrentIndex() によって取得でき、setCurrentIndex() を使用して変更できます。同様に、現在表示されているウィジェットはcurrentWidget() 関数を使用して取得でき、setCurrentWidget() 関数を使用して変更できます。
スタックされたウィジェット内の現在のウィジェットが変更されたり、ウィジェットがスタックから削除されたりすると、それぞれcurrentChanged() およびwidgetRemoved() シグナルが発行されます。
「 QStackedLayout 」および「QTabWidget 」も参照してください 。
プロパティのドキュメント
[read-only] count : int
このプロパティには、このスタック型ウィジェットに含まれるウィジェットの数が格納されます
デフォルトでは、このプロパティの値は 0 になります。
アクセス関数:
| int | count() const |
currentIndex() およびwidget()も参照してください 。
currentIndex : int
このプロパティは、表示されているウィジェットのインデックス位置を保持します
現在表示されているウィジェットがない場合、現在のインデックスは -1 になります。
デフォルトでは、スタックは初期状態では空であるため、このプロパティの値は -1 になります。
アクセス関数:
| int | currentIndex() const |
| void | setCurrentIndex(int index) |
Notifier シグナル:
| void | currentChanged(int index) |
関連項目: currentWidget() およびindexOf()。
メンバ関数のドキュメント
[explicit] QStackedWidget::QStackedWidget(QWidget *parent = nullptr)
指定されたparent を使用して、QStackedWidgetを構築します。
addWidget() およびinsertWidget()も参照してください 。
[virtual noexcept] QStackedWidget::~QStackedWidget()
このスタックされたウィジェットを破棄し、割り当てられたリソースをすべて解放します。
int QStackedWidget::addWidget(QWidget *widget)
指定されたwidget をQStackedWidget に追加し、そのインデックス位置を返します。widget の所有権はQStackedWidget に渡されます。
この関数が呼び出される前にQStackedWidget が空の場合、widget が現在のウィジェットとなります。
insertWidget()、removeWidget()、およびsetCurrentWidget()も参照してください 。
[signal] void QStackedWidget::currentChanged(int index)
このシグナルは、現在のウィジェットが変更されるたびに発火します。
このパラメータには、新しい現在のウィジェットのindex が格納されます。新しいウィジェットが存在しない場合(たとえば、QStackedWidget にウィジェットがない場合など)は-1が格納されます。
注: プロパティ `currentIndex` に対するNotifier シグナルです。
currentWidget() およびsetCurrentWidget()も参照してください 。
QWidget *QStackedWidget::currentWidget() const
現在のウィジェットを返します。子ウィジェットがない場合は、nullptr を返します。
currentIndex() およびsetCurrentWidget()も参照してください 。
[override virtual protected] bool QStackedWidget::event(QEvent *e)
QFrame::event(QEvent *e) を再実装しています。
int QStackedWidget::indexOf(const QWidget *widget) const
指定されたwidget のインデックスを返します。指定されたwidget がQStackedWidget の子要素でない場合は-1を返します。
currentIndex() およびwidget()も参照してください 。
int QStackedWidget::insertWidget(int index, QWidget *widget)
指定されたwidget を、QStackedWidget 内の指定されたindex に挿入します。widget の所有権はQStackedWidget に渡されます。index が範囲外の場合、widget が末尾に追加されます(この場合、返されるのはwidget の実際のインデックスとなります)。
この関数が呼び出される前にQStackedWidget が空だった場合、指定されたwidget が現在のウィジェットとなります。
現在のインデックス以下に新しいウィジェットを挿入すると、現在のインデックスはインクリメントされますが、現在のウィジェットは維持されます。
addWidget()、removeWidget()、およびsetCurrentWidget()も参照してください 。
void QStackedWidget::removeWidget(QWidget *widget)
「widget 」を「QStackedWidget 」から削除します。つまり、「widget 」は削除されず、単にスタックされたレイアウトから取り除かれるだけで、非表示になります。
注: widget の親 オブジェクトおよび親ウィジェットは、引き続きQStackedWidget のままとなります。アプリケーションで削除されたwidget を再利用したい場合は、親オブジェクトを再設定することを推奨します。
関連項目: addWidget()、insertWidget()、およびcurrentWidget()。
[slot] void QStackedWidget::setCurrentWidget(QWidget *widget)
現在のウィジェットを、指定されたwidget に設定します。新しい現在のウィジェットは、すでにこのスタックされたウィジェット内に含まれている必要があります。
currentWidget() およびsetCurrentIndex()も参照してください 。
QWidget *QStackedWidget::widget(int index) const
指定されたindex にあるウィジェットを返します。そのようなウィジェットが存在しない場合は、nullptr を返します。
currentWidget() およびindexOf()も参照してください 。
[signal, since 6.9] void QStackedWidget::widgetAdded(int index)
このシグナルは、ウィジェットが追加または挿入されるたびに発火します。ウィジェットのindex がパラメータとして渡されます。
この関数はQt 6.9で導入されました。
addWidget() およびinsertWidget()も参照してください 。
[signal] void QStackedWidget::widgetRemoved(int index)
このシグナルは、ウィジェットが削除されるたびに発火します。ウィジェットのindex がパラメータとして渡されます。
removeWidget()も参照してください 。
© 2026 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.