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 | activateNextSubWindow() |
void | activatePreviousSubWindow() |
void | cascadeSubWindows() |
void | closeActiveSubWindow() |
void | closeAllSubWindows() |
void | setActiveSubWindow(QMdiSubWindow *window) |
void | tileSubWindows() |
シグナル
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::DontMaximizeSubWindowOnActivation | 0x1 | アクティブなサブウィンドウが最大化されると、デフォルトの動作は、次にアクティブになるサブウィンドウが最大化されます。この動作を望まない場合は、このオプションを設定します。 |
AreaOptions型はQFlags<AreaOption>のtypedefである。AreaOption値のORの組み合わせを格納します。
enum QMdiArea::ViewMode
この列挙型は、領域の表示モードを記述します; すなわち、サブウィンドウがどのように表示されるかを記述します。
定数 | 値 | 説明 |
---|---|---|
QMdiArea::SubWindowView | 0 | ウィンドウフレームでサブウィンドウを表示する (デフォルト)。 |
QMdiArea::TabbedView | 1 | サブウィンドウをタブバーで表示する。 |
setViewMode()も参照 。
enum QMdiArea::WindowOrder
subWindowList() が返す子ウィンドウのリストの順序付けに使用する基準を指定する。関数cascadeSubWindows() とtileSubWindows() は、この順序に従ってウィンドウを配置します。
定数 | 値 | 説明 |
---|---|---|
QMdiArea::CreationOrder | 0 | ウィンドウは、作成された順に返されます。 |
QMdiArea::StackingOrder | 1 | ウィンドウは、一番上のウィンドウがリストの最後になるように、積み重ねられた順序で返されます。 |
QMdiArea::ActivationHistoryOrder | 2 | ウィンドウは活性化された順に返される。 |
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) |
ViewMode 、setTabShape()、setTabPosition()も参照のこと 。
メンバ関数ドキュメント
QMdiArea::QMdiArea(QWidget *parent = nullptr)
空の mdi 領域を構築します。parent がQWidget のコンストラクタに渡されます。
[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 を削除する。widget はQMdiSubWindow かサブウィンドウの内部ウィジェットでなければならない。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 をアクティブにします。window がnullptr
の場合、現在アクティブなウィンドウはすべて非アクティブになる。
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 領域のすべてのサブウィンドウのリストを返す。order がCreationOrder (デフォルト) の場合、 ウィンドウはワークスペースに挿入された順に並べ替えられる。order がStackingOrder の場合、 ウ ィ ン ド ウは積み重ね順に並べ ら れ、 最上位のウ ィ ン ド ウが リ ス ト の最後の項目 と な る。order がActivationHistoryOrder の場合、ウィンドウは最近の活性化履歴に従ってリストされる。
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.