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 | 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)
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
再リプルメント: (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 を削除します。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)
Reimplements: (QResizeEvent *event):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 が真の場合、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 領域内のすべてのサブウィンドウのリストを返す。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)を再実装します。
©2024 The Qt Company Ltd. 本書に含まれるドキュメントのコントリビューションの著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundationによって発行されたGNU Free Documentation License version 1.3の条項の下でライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。