LoginSignup
7
6

More than 5 years have passed since last update.

QStackedWidgetで、ウィジェットを切り替える方法

Posted at

はじめに

Qtを使って、ウィジェットの一部を動的に切り替える方法を探していたところ、QStackedWidgetを見つけたので、使い方を簡単にまとめます。

QStackedWidgetの使い方

QStackedWidgetを使うには、QStackedWidgetをインクルードする必要があります。

#include <QStackedWidget>

QStackedWidgetにウィジェットを追加して、特定のウィジェットを表示させるには、addWidget(QWidget *widget)setCurrentIndex(int index)を使います。

QWidget *page1 = new QWidget;
QWidget *page2 = new QWidget;

QStackedWidget *stackedWidget = new QStackedWidget;

// ウィジェットを追加して、そのインデックスを受け取る
int idx_page1 = stackedWidget->addWidget(page1);
int idx_page2 = stackedWidget->addWidget(page2);

// 表示したいウィジェットのインデックスをセット
stackedWidget->setCurrentIndex(idx_page1);

インデックスの他に、ウィジェットを指定することもできます。

stackedWidget->setCurrentWidget(page1);

さらに詳しい解説は、公式のドキュメントを参照してください。
Qt Documentation - QStackedWidget Class

QtDesignerを使う場合

QtDesignerのウィジェットボックスにある、Stacked WidgetがQStackedWidgetです。
スクリーンショット 2016-12-10 18.24.55.png

配置すると、カラのページを二つ持ったQStackedWidgetができます。
これらのページを直接編集しても良いですし、表示させたいウィジェットを別で作成しておいて、ページを格上げすることもできます。
スクリーンショット 2016-12-10 18.26.25.png

QStackedWidgetを使ったサンプル

ページを進めたり、追加・削除ができるサンプルを、GitHubに上げておきました。
GitHub - QStackedWidgetを使ったサンプル

おわりに

QStackedWidgetを使えば、インストーラでよくある、次へを押して進んでいくようなアプリケーションや、モードに応じてウィジェットの一部が変わるようなアプリケーションを作れそうです。他にも便利な機能があると思うので、機会があればさらに探ってみたいと思います。また、使い方について、アドバイス等を頂けたらありがたいです。

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6