このページでは

QTabWidget Class

QTabWidget クラスは、タブ付きウィジェットのスタックを提供します。詳細...

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

パブリック型

enum TabPosition { North, South, West, East }
enum TabShape { Rounded, Triangular }

プロパティ

パブリック関数

QTabWidget(QWidget *parent = nullptr)
virtual ~QTabWidget()
int addTab(QWidget *page, const QString &label)
int addTab(QWidget *page, const QIcon &icon, const QString &label)
void clear()
QWidget *cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const
int count() const
int currentIndex() const
QWidget *currentWidget() const
bool documentMode() const
Qt::TextElideMode elideMode() const
QSize iconSize() const
int indexOf(const QWidget *w) const
int insertTab(int index, QWidget *page, const QString &label)
int insertTab(int index, QWidget *page, const QIcon &icon, const QString &label)
bool isMovable() const
bool isTabEnabled(int index) const
bool isTabVisible(int index) const
void removeTab(int index)
void setCornerWidget(QWidget *widget, Qt::Corner corner = Qt::TopRightCorner)
void setDocumentMode(bool set)
void setElideMode(Qt::TextElideMode mode)
void setIconSize(const QSize &size)
void setMovable(bool movable)
void setTabBarAutoHide(bool enabled)
void setTabEnabled(int index, bool enable)
void setTabIcon(int index, const QIcon &icon)
void setTabPosition(QTabWidget::TabPosition position)
void setTabShape(QTabWidget::TabShape s)
void setTabText(int index, const QString &label)
void setTabToolTip(int index, const QString &tip)
void setTabVisible(int index, bool visible)
void setTabWhatsThis(int index, const QString &text)
void setTabsClosable(bool closeable)
void setUsesScrollButtons(bool useButtons)
QTabBar *tabBar() const
bool tabBarAutoHide() const
QIcon tabIcon(int index) const
QTabWidget::TabPosition tabPosition() const
QTabWidget::TabShape tabShape() const
QString tabText(int index) const
QString tabToolTip(int index) const
QString tabWhatsThis(int index) const
bool tabsClosable() const
bool usesScrollButtons() const
QWidget *widget(int index) const

再実装されたパブリック関数

virtual bool hasHeightForWidth() const override
virtual int heightForWidth(int width) const override
virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

パブリックスロット

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

シグナル

void currentChanged(int index)
void tabBarClicked(int index)
void tabBarDoubleClicked(int index)
void tabCloseRequested(int index)

protected関数

virtual void initStyleOption(QStyleOptionTabWidgetFrame *option) const
void setTabBar(QTabBar *tb)
virtual void tabInserted(int index)
virtual void tabRemoved(int index)

再実装されたプロテクト関数

virtual void changeEvent(QEvent *ev) override
virtual bool event(QEvent *ev) override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void paintEvent(QPaintEvent *event) override
virtual void resizeEvent(QResizeEvent *e) override
virtual void showEvent(QShowEvent *) override

詳細な説明

2つのタブを持つタブウィジェット

タブウィジェットは、タブバー(QTabBar を参照)と、各タブに関連するページを表示するために使用される「ページ領域」を提供します。デフォルトでは、タブバーはページ領域の上に表示されますが、さまざまな設定が可能です(TabPosition を参照)。各タブは、それぞれ異なるウィジェット(ページと呼ばれる)に関連付けられています。 ページ領域には現在のページのみが表示され、他のすべてのページは非表示になります。ユーザーは、タブをクリックするか、ショートカットキー(Alt+文字)が設定されている場合はそれを押すことで、別のページを表示できます。

QTabWidget を使用する一般的な方法は、次のとおりです。

  1. QTabWidget を作成します。
  2. タブダイアログ内の各ページに対してQWidget を作成しますが、それらの親ウィジェットは指定しないでください。
  3. レイアウトを使用して通常通り配置しながら、子ウィジェットをページウィジェットに挿入します。
  4. addTab() またはinsertTab() を呼び出して、ページウィジェットをタブウィジェットに配置し、各タブに適切なラベルと(オプションで)キーボードショートカットを指定します。

タブの位置はtabPosition によって定義され、形状はtabShape によって定義されます。

currentChanged() シグナルは、ユーザーがページを選択したときに発火します。

現在のページインデックスはcurrentIndex() で、現在のページウィジェットはcurrentWidget() で取得できます。widget() を使用すると、指定されたインデックスのページウィジェットへのポインタを取得でき、indexOf() を使用すると、ウィジェットのインデックス位置を確認できます。特定のページを表示するには、setCurrentWidget() またはsetCurrentIndex() を使用します。

setTabText() またはsetTabIcon() を使用して、タブのテキストやアイコンを変更できます。removeTab() を使用すると、タブおよびそれに関連付けられたページを削除できます。

各タブは、任意の時点で有効または無効のいずれかの状態になります(setTabEnabled() を参照)。タブが有効の場合、タブのテキストは通常通り表示され、ユーザーはそのタブを選択できます。無効の場合、タブは異なる方法で表示され、ユーザーはそのタブを選択できません。 なお、タブが無効になっていても、例えばすべてのタブが無効になっている場合などには、そのページが表示されたままになることに注意してください。

タブウィジェットは、複雑なダイアログを分割するのに非常に有効な手段となります。別の方法として、QStackedWidget を使用し、ページ間の移動手段(例:QToolBar やQListWidget )を用意することもできます。

QTabWidgetの機能のほとんどは、QTabBar (上部に配置され、タブを提供する)とQStackedWidget (領域の大部分を占め、個々のページを整理する)によって提供されています。

QTabBar 、QStackedWidget 、QToolBox 、および「タブダイアログの例」も参照してください 。

メンバー型のドキュメント

enum QTabWidget::TabPosition

この列挙型は、QTabWidget がタブ行をどこに描画するかを定義します:

定数定数名説明
QTabWidget::North0タブはページの上部に描画されます。
QTabWidget::South1タブはページの下に描画されます。
QTabWidget::West2タブはページより左側に描画されます。
QTabWidget::East3タブはページより右側に描画されます。

enum QTabWidget::TabShape

この列挙型は、タブの形状を定義します:

定数値説明
QTabWidget::Rounded0タブは角が丸い形状で描画されます。これがデフォルトの形状です。
QTabWidget::Triangular1タブは三角形の形状で描画されます。

プロパティのドキュメント

[read-only] count : int

このプロパティは、タブバー内のタブの数を保持します

デフォルトでは、このプロパティの値は 0 です。

アクセス関数:

int count() const

currentIndex : int

このプロパティは、現在のタブページのインデックス位置を保持します

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

デフォルトでは、ウィジェットには初期状態でタブが存在しないため、このプロパティの値は -1 になります。

アクセス関数:

int currentIndex() const
void setCurrentIndex(int index)

Notifierシグナル:

void currentChanged(int index)

documentMode : bool

このプロパティは、タブウィジェットがドキュメントページに適したモードでレンダリングされるかどうかを指定します。これは、macOS のドキュメントモードと同じです。

このプロパティが設定されている場合、タブウィジェットのフレームはレンダリングされません。このモードは、ページがタブウィジェット領域の大部分を占めるドキュメントタイプのページを表示する際に役立ちます。

アクセス関数:

bool documentMode() const
void setDocumentMode(bool set)

関連項目: elideMode 、QTabBar::documentMode 、QTabBar::usesScrollButtons 、およびQStyle::SH_TabBar_PreferNoArrows 。

elideMode : Qt::TextElideMode

タブバーでテキストを省略する方法

このプロパティは、指定されたタブバーのサイズに対してアイテムを表示するスペースが不足している場合に、アイテムがどのように省略されるかを制御します。

デフォルトでは、この値はスタイルに依存します。

関連機能:

Qt::TextElideMode elideMode() const
void setElideMode(Qt::TextElideMode mode)

関連項目: QTabBar::elideMode 、usesScrollButtons 、およびQStyle::SH_TabBar_ElideMode 。

iconSize : QSize

このプロパティは、タブバー内のアイコンのサイズを指定します

デフォルト値はスタイルによって異なります。これはアイコンの最大サイズです。アイコンのサイズがこれより小さい場合、拡大表示されることはありません。

アクセス関数:

QSize iconSize() const
void setIconSize(const QSize &size)

関連項目: QTabBar::iconSize 。

movable : bool

このプロパティは、ユーザーがタブバー領域内でタブを移動できるかどうかを指定します。

デフォルトでは、このプロパティはfalse です。

アクセス関数:

bool isMovable() const
void setMovable(bool movable)

tabBarAutoHide : bool

true の場合、タブバーに含まれるタブが 2 つ未満になると、タブバーは自動的に非表示になります。

デフォルトでは、このプロパティの値は false です。

アクセス関数:

bool tabBarAutoHide() const
void setTabBarAutoHide(bool enabled)

関連項目: QWidget::visible 。

tabPosition : TabPosition

このプロパティは、このタブウィジェット内のタブの位置を保持します

このプロパティの取り得る値は、TabPosition 列挙型で定義されています。

デフォルトでは、このプロパティはNorth に設定されています。

アクセス関数:

QTabWidget::TabPosition tabPosition() const
void setTabPosition(QTabWidget::TabPosition position)

「TabPosition」も参照してください 。

tabShape : TabShape

このプロパティは、このタブウィジェットにおけるタブの形状を指定します

このプロパティの取り得る値は、QTabWidget::Rounded (デフォルト)またはQTabWidget::Triangular です。

アクセス関数:

QTabWidget::TabShape tabShape() const
void setTabShape(QTabWidget::TabShape s)

「TabShape」も参照してください 。

tabsClosable : bool

このプロパティは、各タブに閉じるボタンが自動的に追加されるかどうかを指定します。

アクセス関数:

bool tabsClosable() const
void setTabsClosable(bool closeable)

関連項目: QTabBar::tabsClosable()。

usesScrollButtons : bool

このプロパティは、タブバーに多数のタブがある場合、タブのスクロールにボタンを使用すべきかどうかを指定します。

タブバーのサイズに対してタブの数が多すぎる場合、タブバーはサイズを拡大するか、タブをスクロールするためのボタンを追加するかを選択できます。

デフォルトでは、この値はスタイルに依存します。

関連機能:

bool usesScrollButtons() const
void setUsesScrollButtons(bool useButtons)

関連項目: elideMode 、QTabBar::usesScrollButtons 、およびQStyle::SH_TabBar_PreferNoArrows 。

メンバ関数のドキュメント

[explicit] QTabWidget::QTabWidget(QWidget *parent = nullptr)

親要素がparent であるタブ付きウィジェットを作成します。

[virtual noexcept] QTabWidget::~QTabWidget()

タブ付きウィジェットを削除します。

int QTabWidget::addTab(QWidget *page, const QString &label)

指定されたpage およびlabel を持つタブをタブウィジェットに追加し、タブバー内のそのタブのインデックスを返します。page の所有権はQTabWidget に渡されます。

タブのlabel にアンパサンドが含まれている場合、アンパサンドの直後の文字がタブのショートカットとして使用されます。たとえば、ラベルが「Bro&wse」の場合、Alt+Wを押すと、このタブにフォーカスが移動するショートカットとなります。

注: show() の後に addTab()を呼び出すと 、レイアウトシステムはウィジェット階層の変更に合わせて調整を試み、ちらつきが発生する可能性があります。これを防ぐには、変更を行う前にQWidget::updatesEnabled プロパティを false に設定してください。変更が完了したら、ウィジェットが再びペイントイベントを受け取れるように、このプロパティを true に設定することを忘れないでください。

insertTab()も参照してください 。

int QTabWidget::addTab(QWidget *page, const QIcon &icon, const QString &label)

指定されたpage 、icon 、およびlabel を持つタブをタブウィジェットに追加し、タブバー内のそのタブのインデックスを返します。page の所有権は、QTabWidget に渡されます。

この関数は addTab() と同じですが、icon が追加されています。

これはオーバーロードされた関数です。

[override virtual protected] void QTabWidget::changeEvent(QEvent *ev)

QWidget::changeEvent(QEvent *event) を再実装します。

void QTabWidget::clear()

すべてのページを削除しますが、ページ自体は削除されません。この関数を呼び出すことは、タブウィジェットが空になるまでremoveTab()を呼び続けるのと同じです。

QWidget *QTabWidget::cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const

タブウィジェットのcorner に表示されているウィジェット、またはnullptr を返します。

setCornerWidget()も参照してください 。

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

このシグナルは、現在のページインデックスが変更されるたびに発火します。パラメータは、新しい現在のページindex の位置、または新しい位置がない場合は-1となります(例えば、QTabWidget にウィジェットが存在しない場合など)。

注: プロパティ `currentIndex`の通知 シグナルです。

関連項目: currentWidget() およびcurrentIndex 。

QWidget *QTabWidget::currentWidget() const

タブダイアログによって現在表示されているページへのポインタを返します。タブダイアログは、この値が決して 0 にならないよう最善を尽くします(ただし、かなり無理をすれば 0 になる可能性もあります)。

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

[override virtual protected] bool QTabWidget::event(QEvent *ev)

QWidget::event(QEvent *event) の再実装です。

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

QWidget::hasHeightForWidth() const を再実装します。

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

QWidget::heightForWidth(int w) const の再実装。

int QTabWidget::indexOf(const QWidget *w) const

ウィジェットw が占めるページのインデックス位置を返します。ウィジェットが見つからない場合は-1を返します。

[virtual protected] void QTabWidget::initStyleOption(QStyleOptionTabWidgetFrame *option) const

option を、このQTabWidget の値で初期化します。この方法は、サブクラスがQStyleOptionTabWidgetFrame を必要とするものの、すべての情報を自ら入力したくない場合に役立ちます。

QStyleOption::initFrom() およびQTabBar::initStyleOption()も参照してください 。

int QTabWidget::insertTab(int index, QWidget *page, const QString &label)

指定された `label ` および `page ` を持つタブを、指定された `index` のタブウィジェットに挿入し、タブバー内の挿入されたタブのインデックスを返します。`page ` の所有権は `QTabWidget` に引き継がれます。

ラベルはタブに表示され、その外観はタブウィジェットの設定によって異なる場合があります。

タブのlabel にアンパサンドが含まれている場合、アンパサンドに続く文字がタブのショートカットとして使用されます。たとえば、ラベルが「Bro&wse」の場合、Alt+W を押すと、このタブにフォーカスが移動します。

index が範囲外の場合、タブは単に末尾に追加されます。それ以外の場合は、指定された位置に挿入されます。

この関数が呼び出される前に `QTabWidget ` が空だった場合、新しいページが現在のページになります。現在のインデックス以下に新しいタブを挿入すると、現在のインデックスはインクリメントされますが、現在のページは維持されます。

注: show() の後に insertTab()を呼び出すと 、レイアウトシステムはウィジェット階層の変更に合わせて調整を試み、ちらつきが発生する可能性があります。これを防ぐには、変更を行う前にQWidget::updatesEnabled プロパティを false に設定してください。変更が完了したら、このプロパティを true に設定し、ウィジェットが再びペイントイベントを受け取れるようにすることを忘れないでください。

addTab()も参照してください 。

int QTabWidget::insertTab(int index, QWidget *page, const QIcon &icon, const QString &label)

指定された `label`、`page`、および `icon ` を持つタブを、指定された `index` のタブウィジェットに挿入し、タブバー内の挿入されたタブのインデックスを返します。page の所有権は、QTabWidget に引き継がれます。

この関数は insertTab() と同じですが、icon が追加されています。

これはオーバーロードされた関数です。

bool QTabWidget::isTabEnabled(int index) const

位置index にあるページが有効な場合は `true ` を返し、そうでない場合は `false` を返します。

setTabEnabled() およびQWidget::isEnabled()も参照してください 。

bool QTabWidget::isTabVisible(int index) const

index の位置にあるページが表示されている場合は true を返し、そうでない場合は false を返します。

setTabVisible()も参照してください 。

[override virtual protected] void QTabWidget::keyPressEvent(QKeyEvent *e)

QWidget::keyPressEvent(QKeyEvent *event) を再実装します。

[override virtual] QSize QTabWidget::minimumSizeHint() const

プロパティ「QWidget::minimumSizeHint 」のアクセス関数を再実装します。

タブウィジェットに適した最小サイズを返します。

[override virtual protected] void QTabWidget::paintEvent(QPaintEvent *event)

QWidget::paintEvent(QPaintEvent *event) を再実装します。

event へのペイント要求に応じて、タブウィジェットのタブバーを描画します。

void QTabWidget::removeTab(int index)

このウィジェットのスタックから、位置index にあるタブを削除します。ページウィジェット自体は削除されません。

addTab() およびinsertTab()も参照してください 。

[override virtual protected] void QTabWidget::resizeEvent(QResizeEvent *e)

QWidget::resizeEvent(QResizeEvent *event) を再実装します。

void QTabWidget::setCornerWidget(QWidget *widget, Qt::Corner corner = Qt::TopRightCorner)

指定されたwidget を、タブウィジェットの指定されたcorner に表示するように設定します。ウィジェットのジオメトリは、ウィジェットのsizeHint()およびstyle()に基づいて決定されます。

corner の水平方向の要素のみが使用されます。

nullptr を指定すると、コーナーにはウィジェットが表示されません。

以前に設定されていたコーナーウィジェットは非表示になります。

ここで設定されたすべてのウィジェットは、他のコーナーウィジェット(またはnullptr )を設定した後に個別に親を変更しない限り、タブウィジェットが破棄される際に削除されます。

注:コーナーウィジェットは、North およびSouth のタブ位置用に設計されています。その他の向きでは正常に動作しないことがわかっています。

cornerWidget() およびsetTabPosition()も参照してください 。

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

widget を現在のウィジェットに設定します。指定するwidget は、このタブウィジェット内のページである必要があります。

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

[protected] void QTabWidget::setTabBar(QTabBar *tb)

ダイアログの「QTabBar 」という見出しを、タブバーの「tb 」に置き換えます。なお、この関数はタブが追加される前に呼び出す必要があります。そうしないと、動作が不定となります。

tabBar()も参照してください 。

void QTabWidget::setTabEnabled(int index, bool enable)

enable が true の場合、index の位置にあるページが有効になります。そうでない場合は、index の位置にあるページが無効になります。ページのタブは、それに応じて再描画されます。

QTabWidget は、個別のフラグを保持するのではなく、内部で `QWidget::setEnabled()` を使用しています。

なお、無効化されたタブやページであっても表示されている場合があることに注意してください。ページがすでに表示されている場合、QTabWidget はそれを非表示にしません。すべてのページが無効化されている場合、QTabWidget はそれらのうちの1つを表示します。

isTabEnabled() およびQWidget::setEnabled()も参照してください 。

void QTabWidget::setTabIcon(int index, const QIcon &icon)

位置index にあるタブの `icon ` を設定します。

tabIcon()も参照してください 。

void QTabWidget::setTabText(int index, const QString &label)

index の位置にあるページのタブに対して、新しい「label 」を定義します。

指定されたテキストにアンパサンド('&')が含まれている場合、そのテキスト用のショートカットが自動的に作成されます。'&' の後に続く文字がショートカットキーとして使用されます。既存のショートカットは上書きされます。また、テキストによってショートカットが定義されていない場合は、ショートカットは削除されます。 詳細については、QShortcut のドキュメントを参照してください(実際のアンパサンドを表示するには、「&&」を使用してください)。

tabText()も参照してください 。

void QTabWidget::setTabToolTip(int index, const QString &tip)

index の位置にあるページのタブのツールチップを、tip に設定します。

tabToolTip()も参照してください 。

void QTabWidget::setTabVisible(int index, bool visible)

visible が true の場合、位置index にあるページが表示されます。そうでない場合は、位置index にあるページが非表示になります。ページのタブはそれに応じて再描画されます。

isTabVisible()も参照してください 。

void QTabWidget::setTabWhatsThis(int index, const QString &text)

index の位置にあるページの「What's This」ヘルプテキストを、text に設定します。

tabWhatsThis()も参照してください 。

[override virtual protected] void QTabWidget::showEvent(QShowEvent *)

QWidget::showEvent(QShowEvent *event) を再実装します。

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

プロパティ「QWidget::sizeHint 」のアクセス関数を再実装します。

QTabBar *QTabWidget::tabBar() const

現在のQTabBar を返します。

setTabBar()も参照してください 。

[signal] void QTabWidget::tabBarClicked(int index)

このシグナルは、ユーザーが `index` 内のタブをクリックしたときに発生します。

index クリックされたタブを指します。カーソルがタブの上になければ -1 となります。

[signal] void QTabWidget::tabBarDoubleClicked(int index)

このシグナルは、ユーザーがindex 上のタブをダブルクリックしたときに発生します。

index はクリックされたタブのインデックスです。カーソルの下にタブがない場合は -1 になります。

[signal] void QTabWidget::tabCloseRequested(int index)

このシグナルは、タブの「閉じる」ボタンがクリックされたときに発火します。index は、削除すべきインデックスです。

setTabsClosable()も参照してください 。

QIcon QTabWidget::tabIcon(int index) const

index の位置にあるページ上のタブのアイコンを返します。

setTabIcon()も参照してください 。

[virtual protected] void QTabWidget::tabInserted(int index)

この仮想ハンドラは、新しいタブが追加された後、またはindex の位置に挿入された後に呼び出されます。

tabRemoved()も参照してください 。

[virtual protected] void QTabWidget::tabRemoved(int index)

この仮想ハンドラは、位置index からタブが削除された後に呼び出されます。

tabInserted()も参照してください 。

QString QTabWidget::tabText(int index) const

index の位置にあるページ上のタブのラベルテキストを返します。

setTabText()も参照してください 。

QString QTabWidget::tabToolTip(int index) const

index の位置にあるページのタブツールチップを返します。ツールチップが設定されていない場合は、空の文字列を返します。

setTabToolTip()も参照してください 。

QString QTabWidget::tabWhatsThis(int index) const

index の位置にあるページの「What's This」ヘルプテキストを返します。ヘルプテキストが設定されていない場合は、空の文字列を返します。

setTabWhatsThis()も参照してください 。

QWidget *QTabWidget::widget(int index) const

インデックス位置にあるタブページを返します。index が範囲外の場合は、index またはnullptr を返します。

© 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.