QMdiArea Class

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

Header: #include <QMdiArea>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: 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)

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

再リプルメント: (QObject *watched, QEvent *event):QAbstractScrollArea::minimumSizeHint() const.

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

再リプルメント: (QOject *watched, QEvent *event):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)

Reimplements: (QResizeEvent *event):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 が真の場合、option は MDI 領域で有効になり、そうでない場合は無効になる。各オプションの効果についてはAreaOption を参照のこと。

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

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

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

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

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)を再実装します。

©2024 The Qt Company Ltd. 本書に含まれるドキュメントのコントリビューションの著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundationによって発行されたGNU Free Documentation License version 1.3の条項の下でライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。