QMdiArea Class

QMdiAreaウィジェットは、MDIウィンドウを表示するエリアを提供します。詳細...

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

パブリックな型

enum AreaOption { DontMaximizeSubWindowOnActivation }
flags AreaOptions
enum ViewMode { SubWindowView, TabbedView }
enum WindowOrder { CreationOrder, StackingOrder, ActivationHistoryOrder }

プロパティ

パブリック関数

QMdiArea(QWidget *parent = nullptr)
virtual ~QMdiArea()
QMdiArea::WindowOrder activationOrder() const
QMdiSubWindow *activeSubWindow() const
QMdiSubWindow *addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = Qt::WindowFlags())
QBrush background() const
QMdiSubWindow *currentSubWindow() const
bool documentMode() const
void removeSubWindow(QWidget *widget)
void setActivationOrder(QMdiArea::WindowOrder order)
void setBackground(const QBrush &background)
void setDocumentMode(bool enabled)
void setOption(QMdiArea::AreaOption option, bool on = true)
void setTabPosition(QTabWidget::TabPosition position)
void setTabShape(QTabWidget::TabShape shape)
void setTabsClosable(bool closable)
void setTabsMovable(bool movable)
void setViewMode(QMdiArea::ViewMode mode)
QList<QMdiSubWindow *> subWindowList(QMdiArea::WindowOrder order = CreationOrder) const
QTabWidget::TabPosition tabPosition() const
QTabWidget::TabShape tabShape() const
bool tabsClosable() const
bool tabsMovable() const
bool testOption(QMdiArea::AreaOption option) const
QMdiArea::ViewMode viewMode() const

再実装パブリック関数

virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

パブリック・スロット

シグナル

void subWindowActivated(QMdiSubWindow *window)

再実装された保護された関数

virtual void childEvent(QChildEvent *childEvent) override
virtual bool event(QEvent *event) override
virtual bool eventFilter(QObject *object, QEvent *event) override
virtual void paintEvent(QPaintEvent *paintEvent) override
virtual void resizeEvent(QResizeEvent *resizeEvent) override
virtual void scrollContentsBy(int dx, int dy) override
virtual void showEvent(QShowEvent *showEvent) override
virtual void timerEvent(QTimerEvent *timerEvent) override
virtual bool viewportEvent(QEvent *event) override

保護されたスロット

virtual void setupViewport(QWidget *viewport) override

詳細説明

QMdiAreaは、基本的にMDIウィンドウのウィンドウ・マネージャのように機能します。例えば、管理するウィンドウを自分自身に描画し、カスケードパターンやタイルパターンで配置します。QMdiAreaは一般的に、MDIアプリケーションを作成するためにQMainWindow 、中央のウィジェットとして使用されますが、任意のレイアウトに配置することもできます。以下のコードでは、メイン・ウィンドウにエリアを追加しています:

    QMainWindow *mainWindow = new QMainWindow;
    mainWindow->setCentralWidget(mdiArea);

トップレベル・ウィンドウのウィンドウ・マネージャとは異なり、QMdiAreaは、現在のウィジェット・スタイルでサポートされている限り、すべてのウィンドウ・フラグ(Qt::WindowFlags)をサポートします。特定のフラグがスタイルでサポートされていない場合 (例えば、WindowShadeButtonHint)、showShaded() を使用してウィンドウをシェーディングすることができます。

QMdiArea のサブウィンドウはQMdiSubWindow のインスタンスです。これらはaddSubWindow() で MDI エリアに追加されます。この関数には、内部ウィジェットとして設定されているQWidget を渡すのが一般的ですが、QMdiSubWindow を直接渡すことも可能です。このクラスはQWidget を継承しており、プログラミングの際には通常のトップレベル・ウィンドウと同じAPIを使用することができます。QMdiSubWindow はMDIウィンドウ特有の動作も持っています。詳しくはQMdiSubWindow クラスの説明を参照してください。

サブウィンドウは、キーボード・フォーカスが当たったとき、またはsetFocus() が呼ばれたときにアクティブになります。ユーザーがウィンドウをアクティブにするには、通常の方法でフォーカスを移動します。アクティブなウィンドウが変更されると、MDIエリアはsubWindowActivated ()シグナルを発し、activeSubWindow ()関数はアクティブなサブウィンドウを返します。

便利な関数subWindowList() は、すべてのサブウィンドウのリストを返します。この情報は、たとえばウィンドウのリストを含むポップアップ・メニューで使うことができます。

サブウィンドウは、現在のWindowOrder でソートされる。これはsubWindowList()、activateNextSubWindow()、activatePreviousSubWindow()で使われる。また、cascadeSubWindows() やtileSubWindows() でウィンドウをカスケードまたはタイリングするときにも使用されます。

QMdiAreaは、サブウィンドウ用に2つの組み込みレイアウト戦略を提供します:cascadeSubWindows()とtileSubWindows()。どちらもスロットで、メニュー・エントリーに簡単に接続できます。

注意: QMdiAreaのデフォルトのスクロール・バー・プロパティはQt::ScrollBarAlwaysOff です。

QMdiSubWindowも参照してください

メンバ・タイプのドキュメント

enum QMdiArea::AreaOption
flags QMdiArea::AreaOptions

この enum は、QMdiArea の動作をカスタマイズするオプションを記述します。

定数説明
QMdiArea::DontMaximizeSubWindowOnActivation0x1アクティブなサブウィンドウが最大化されると、デフォルトの動作は、次にアクティブになるサブウィンドウが最大化されます。この動作を望まない場合は、このオプションを設定します。

AreaOptions型はQFlags<AreaOption>のtypedefである。AreaOption値のORの組み合わせを格納します。

enum QMdiArea::ViewMode

この列挙型は、領域の表示モードを記述します; すなわち、サブウィンドウがどのように表示されるかを記述します。

定数説明
QMdiArea::SubWindowView0ウィンドウフレームでサブウィンドウを表示する (デフォルト)。
QMdiArea::TabbedView1サブウィンドウをタブバーで表示する。

setViewMode()も参照

enum QMdiArea::WindowOrder

subWindowList() が返す子ウィンドウのリストの順序付けに使用する基準を指定する。関数cascadeSubWindows() とtileSubWindows() は、この順序に従ってウィンドウを配置します。

定数説明
QMdiArea::CreationOrder0ウィンドウは、作成された順に返されます。
QMdiArea::StackingOrder1ウィンドウは、一番上のウィンドウがリストの最後になるように、積み重ねられた順序で返されます。
QMdiArea::ActivationHistoryOrder2ウィンドウは活性化された順に返される。

subWindowList()も参照

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

activationOrder : WindowOrder

このプロパティは、サブウィンドウ・リストの順序付け基準を保持する。

このプロパティは、subWindowList ()によって返されるサブウィンドウのリストの順序基準を指定します。デフォルトでは、ウィンドウの作成順となる。

アクセス関数:

QMdiArea::WindowOrder activationOrder() const
void setActivationOrder(QMdiArea::WindowOrder order)

subWindowList()も参照

background : QBrush

このプロパティは、ワークスペースの背景ブラシを保持します。

このプロパティは、ワークスペース領域自体の背景ブラシを設定します。デフォルトでは灰色ですが、任意のブラシ(色、グラデーション、pixmapなど)を指定できます。

アクセス関数:

QBrush background() const
void setBackground(const QBrush &background)

documentMode : bool

このプロパティは、タブビューモードでタブバーがドキュメントモードに設定されているかどうかを保持する。

デフォルトではドキュメント・モードは無効である。

アクセス関数:

bool documentMode() const
void setDocumentMode(bool enabled)

QTabBar::documentMode およびsetViewMode()も参照のこと

tabPosition : QTabWidget::TabPosition

このプロパティは、タブビューモードにおけるタブの位置を保持する。

このプロパティに取り得る値は、QTabWidget::TabPosition enumで記述される。

アクセス関数:

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

QTabWidget::TabPosition およびsetViewMode()も参照の こと。

tabShape : QTabWidget::TabShape

このプロパティは、タブビューモードにおけるタブの形状を保持する。

このプロパティに指定できる値は、QTabWidget::Rounded (デフォルト)またはQTabWidget::Triangular

アクセス関数:

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

QTabWidget::TabShape およびsetViewMode()も参照のこと

tabsClosable : bool

このプロパティは、タブビューモードでタブバーが各タブに閉じるボタンを配置するかどうかを保持します。

デフォルトでは、タブは閉じられません。

アクセス関数:

bool tabsClosable() const
void setTabsClosable(bool closable)

QTabBar::tabsClosable およびsetViewMode()も参照のこと

tabsMovable : bool

このプロパティは、タブビューモードでタブバー領域内のタブを移動できるかどうかを保持する。

デフォルトではタブは移動できません。

アクセス関数:

bool tabsMovable() const
void setTabsMovable(bool movable)

QTabBar::movable およびsetViewMode()も参照のこと

viewMode : ViewMode

このプロパティは、QMdiArea におけるサブウィンドウの表示方法を保持する。

デフォルトでは、SubWindowView がサブウィンドウの表示に使われる。

アクセス関数:

QMdiArea::ViewMode viewMode() const
void setViewMode(QMdiArea::ViewMode mode)

ViewModesetTabShape()、setTabPosition()も参照のこと

メンバ関数ドキュメント

QMdiArea::QMdiArea(QWidget *parent = nullptr)

空の mdi 領域を構築します。parentQWidget のコンストラクタに渡されます。

[virtual noexcept] QMdiArea::~QMdiArea()

MDIエリアを破壊する。

[slot] void QMdiArea::activateNextSubWindow()

子ウィンドウのリストにある別のウィンドウにキーボードフォーカスを与える。活性化されるウィンドウは、現在のactivation order によって決定される次のウィンドウとなる。

activatePreviousSubWindow() およびQMdiArea::WindowOrderも参照

[slot] void QMdiArea::activatePreviousSubWindow()

子ウィンドウのリストにある別のウィンドウにキーボードフォーカスを与える。アクティブになるウィンドウは、現在のactivation order で決定される前のウィンドウになります。

activateNextSubWindow() およびQMdiArea::WindowOrderも参照

QMdiSubWindow *QMdiArea::activeSubWindow() const

現在アクティブなサブウィンドウへのポインタを返す。現在アクティブなウィンドウがない場合は、nullptr

サブウィンドウは、ウィンドウの状態に関してはトップレベルウィンドウとして扱われます。つまり、MDIエリアの外のウィジェットがアクティブウィンドウの場合、サブウィンドウはアクティブになりません。MDIエリアが存在するウィンドウ内のウィジェットがフォーカスを得ると、そのウィンドウがアクティブになることに注意してください。

setActiveSubWindow() およびQt::WindowStateも参照してください

QMdiSubWindow *QMdiArea::addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = Qt::WindowFlags())

MDI領域に新しいサブウィンドウとしてwidget を追加する。windowFlags がゼロ以外の場合、ウィジェットに設定されているフラグを上書きする。

widget は、QMdiSubWindow または別のQWidget のいずれかにすることができます (この場合、MDI エリアはサブウィンドウを作成し、widget を内部ウィジェットとして設定します)。

注意: サブウィンドウが追加されると、その親はQMdiAreaビューポート・ウィジェットになります。

    QMdiArea mdiArea;
    QMdiSubWindow *subWindow1 = new QMdiSubWindow;
    subWindow1->setWidget(internalWidget1);
    subWindow1->setAttribute(Qt::WA_DeleteOnClose);
    mdiArea.addSubWindow(subWindow1);

    QMdiSubWindow *subWindow2 =
        mdiArea.addSubWindow(internalWidget2);

独自のサブウィンドウを作成するとき、MDIエリアでウィンドウを閉じたときに削除したい場合は、Qt::WA_DeleteOnClose ウィジェット属性を設定する必要があります。そうしないと、ウィンドウは隠され、MDIエリアは次のサブウィンドウをアクティブにしません。

MDI エリアに追加されるQMdiSubWindow を返します。

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

[slot] void QMdiArea::cascadeSubWindows()

すべての子ウィンドウをカスケードパターンで並べる。

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

[override virtual protected] void QMdiArea::childEvent(QChildEvent *childEvent)

再実装:QObject::childEvent(QChildEvent *event).

[slot] void QMdiArea::closeActiveSubWindow()

アクティブなサブウィンドウを閉じる。

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

[slot] void QMdiArea::closeAllSubWindows()

各ウィンドウにQCloseEvent を送ってすべてのサブウィンドウを閉じる。サブウィンドウが閉じる前に、サブウィンドウからsubWindowActivated() シグナルを受け取ることがあります (MDI 領域が、他のウィンドウが閉じているときにサブウィンドウをアクティブにした場合)。

閉じるイベントを無視したサブウィンドウは開いたままになります。

closeActiveSubWindow()も参照

QMdiSubWindow *QMdiArea::currentSubWindow() const

現在のサブウィンドウへのポインタを返し、現在のサブウィンドウがない場合はnullptr を返す。

QMdiArea を含むQApplication がアクティブな場合、この関数はactiveSubWindow() と同じものを返す。

activeSubWindow() およびQApplication::activeWindow()も参照

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

再実装:QAbstractScrollArea::event(QEvent *event)。

[override virtual protected] bool QMdiArea::eventFilter(QObject *object, QEvent *event)

再インプリメント:QObject::eventFilter(QObject *watched, QEvent *event)。

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

再実装:QAbstractScrollArea::minimumSizeHint() const.

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

再実装:QAbstractScrollArea::paintEvent(QPaintEvent *event)。

void QMdiArea::removeSubWindow(QWidget *widget)

MDI 領域からwidget を削除する。widgetQMdiSubWindow かサブウィンドウの内部ウィジェットでなければならない。QMdiArea によってwidget が実際に削除されることはない。QMdiSubWindow が渡された場合、その親ウィジェットはnullptr に設定され、削除されます。 しかし、内部ウィジェットが渡された場合、その子ウィジェットはnullptr に設定され、QMdiSubWindow は削除されません

addSubWindow()も参照のこと

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

再実装:QAbstractScrollArea::resizeEvent(QResizeEvent *event)。

[override virtual protected] void QMdiArea::scrollContentsBy(int dx, int dy)

再実装:QAbstractScrollArea::scrollContentsBy(int dx, int dy).

[slot] void QMdiArea::setActiveSubWindow(QMdiSubWindow *window)

サブウィンドウwindow をアクティブにします。windownullptr の場合、現在アクティブなウィンドウはすべて非アクティブになる。

activeSubWindow()も参照

void QMdiArea::setOption(QMdiArea::AreaOption option, bool on = true)

もしon がtrueなら、option がMDIエリアで有効になり、そうでなければ無効になる。各オプションの効果についてはAreaOption を参照のこと。

AreaOption およびtestOption()も参照の こと。

[override virtual protected slot] void QMdiArea::setupViewport(QWidget *viewport)

再実装:QAbstractScrollArea::setupViewport(QWidget *viewport)。

このスロットは、setViewport() が呼び出された後に、QAbstractScrollArea によって呼び出されます。新しいviewport が使用される前に初期化するために、QMdiArea のサブクラスでこの関数を再実装します。

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

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

再実装:QWidget::showEvent(QShowEvent *event)。

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

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

[signal] void QMdiArea::subWindowActivated(QMdiSubWindow *window)

QMdiArea は、 がアクティブになった後、このシグナルを発する。 が のとき、 は最後のアクティブ・ウィンドウを非アクティブにしたところで、ワークスペースにはアクティブなウィンドウはない。window window nullptr QMdiArea

QMdiArea::activeSubWindow()も参照

QList<QMdiSubWindow *> QMdiArea::subWindowList(QMdiArea::WindowOrder order = CreationOrder) const

MDI 領域のすべてのサブウィンドウのリストを返す。orderCreationOrder (デフォルト) の場合、 ウィンドウはワークスペースに挿入された順に並べ替えられる。orderStackingOrder の場合、 ウ ィ ン ド ウは積み重ね順に並べ ら れ、 最上位のウ ィ ン ド ウが リ ス ト の最後の項目 と な る。orderActivationHistoryOrder の場合、ウィンドウは最近の活性化履歴に従ってリストされる。

WindowOrderも参照のこと

bool QMdiArea::testOption(QMdiArea::AreaOption option) const

option が有効な場合はtrue を返し、そうでない場合はfalse を返す。

AreaOption およびsetOption()も参照のこと

[slot] void QMdiArea::tileSubWindows()

すべての子ウィンドウをタイル状に並べる。

cascadeSubWindows()も参照

[override virtual protected] void QMdiArea::timerEvent(QTimerEvent *timerEvent)

再実装:QObject::timerEvent(QTimerEvent *event).

[override virtual protected] bool QMdiArea::viewportEvent(QEvent *event)

再実装:QAbstractScrollArea::viewportEvent(QEvent *event)。

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