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 |
詳細な説明

タブウィジェットは、タブバー(QTabBar を参照)と、各タブに関連するページを表示するために使用される「ページ領域」を提供します。デフォルトでは、タブバーはページ領域の上に表示されますが、さまざまな設定が可能です(TabPosition を参照)。各タブは、それぞれ異なるウィジェット(ページと呼ばれる)に関連付けられています。 ページ領域には現在のページのみが表示され、他のすべてのページは非表示になります。ユーザーは、タブをクリックするか、ショートカットキー(Alt+文字)が設定されている場合はそれを押すことで、別のページを表示できます。
QTabWidget を使用する一般的な方法は、次のとおりです。
- QTabWidget を作成します。
- タブダイアログ内の各ページに対してQWidget を作成しますが、それらの親ウィジェットは指定しないでください。
- レイアウトを使用して通常通り配置しながら、子ウィジェットをページウィジェットに挿入します。
- 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::North | 0 | タブはページの上部に描画されます。 |
QTabWidget::South | 1 | タブはページの下に描画されます。 |
QTabWidget::West | 2 | タブはページより左側に描画されます。 |
QTabWidget::East | 3 | タブはページより右側に描画されます。 |
enum QTabWidget::TabShape
この列挙型は、タブの形状を定義します:
| 定数 | 値 | 説明 |
|---|---|---|
QTabWidget::Rounded | 0 | タブは角が丸い形状で描画されます。これがデフォルトの形状です。 |
QTabWidget::Triangular | 1 | タブは三角形の形状で描画されます。 |
プロパティのドキュメント
[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.