QMdiSubWindow Class
QMdiSubWindow クラスは、QMdiArea 用のサブウィンドウクラスを提供します。詳細...
| ヘッダー: | #include <QMdiSubWindow> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 継承元: | QWidget |
パブリック型
| enum | SubWindowOption { RubberBandResize, RubberBandMove } |
| flags | SubWindowOptions |
プロパティ
- keyboardPageStep : int
- keyboardSingleStep : int
パブリック関数
| QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
| virtual | ~QMdiSubWindow() |
| bool | isShaded() const |
| int | keyboardPageStep() const |
| int | keyboardSingleStep() const |
| QMdiArea * | mdiArea() const |
| void | setKeyboardPageStep(int step) |
| void | setKeyboardSingleStep(int step) |
| void | setOption(QMdiSubWindow::SubWindowOption option, bool on = true) |
| void | setSystemMenu(QMenu *systemMenu) |
| void | setWidget(QWidget *widget) |
| QMenu * | systemMenu() const |
| bool | testOption(QMdiSubWindow::SubWindowOption option) const |
| QWidget * | widget() const |
再実装されたパブリック関数
| virtual QSize | minimumSizeHint() const override |
| virtual QSize | sizeHint() const override |
パブリックスロット
| void | showShaded() |
| void | showSystemMenu() |
シグナル
| void | aboutToActivate() |
| void | windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState) |
再実装されたプロテクト関数
| virtual void | changeEvent(QEvent *changeEvent) override |
| virtual void | childEvent(QChildEvent *childEvent) override |
| virtual void | closeEvent(QCloseEvent *closeEvent) override |
| virtual void | contextMenuEvent(QContextMenuEvent *contextMenuEvent) override |
| virtual bool | event(QEvent *event) override |
| virtual bool | eventFilter(QObject *object, QEvent *event) override |
| virtual void | focusInEvent(QFocusEvent *focusInEvent) override |
| virtual void | focusOutEvent(QFocusEvent *focusOutEvent) override |
| virtual void | hideEvent(QHideEvent *hideEvent) override |
| virtual void | keyPressEvent(QKeyEvent *keyEvent) override |
| virtual void | leaveEvent(QEvent *leaveEvent) override |
| virtual void | mouseDoubleClickEvent(QMouseEvent *mouseEvent) override |
| virtual void | mouseMoveEvent(QMouseEvent *mouseEvent) override |
| virtual void | mousePressEvent(QMouseEvent *mouseEvent) override |
| virtual void | mouseReleaseEvent(QMouseEvent *mouseEvent) override |
| virtual void | moveEvent(QMoveEvent *moveEvent) override |
| virtual void | paintEvent(QPaintEvent *paintEvent) override |
| virtual void | resizeEvent(QResizeEvent *resizeEvent) override |
| virtual void | showEvent(QShowEvent *showEvent) override |
| virtual void | timerEvent(QTimerEvent *timerEvent) override |
詳細な説明
QMdiSubWindow は、QMdiArea 内の最上位ウィンドウを表し、ウィンドウ装飾付きのタイトルバー、内部ウィジェット、および(現在のスタイルに応じて)ウィンドウフレームとサイズグリップで構成されます。QMdiSubWindow には独自のレイアウトがあり、タイトルバーと内部ウィジェット用の中央領域で構成されています。

QMdiSubWindow を生成する最も一般的な方法は、内部ウィジェットを引数としてQMdiArea::addSubWindow() を呼び出すことです。また、setWidget() を呼び出すことで、サブウィンドウを自分で作成し、内部ウィジェットを設定することもできます。
サブウィンドウのプログラミングでは、通常のトップレベルウィンドウと同じ API を使用します(たとえば、show()、hide()、showMaximized()、setWindowTitle() などの関数を呼び出すことができます)。
サブウィンドウの処理
QMdiSubWindow は、MDI 領域内のサブウィンドウに特有の挙動もサポートしています。
デフォルトでは、各 QMdiSubWindow は移動時に MDI 領域のビューポート内に表示されますが、ウィンドウの移動やサイズ変更の際にサブウィンドウの輪郭のみが更新されるような、透過的なウィンドウ操作を指定することも可能です。この動作を有効にするには、setOption() 関数を使用します。
isShaded() 関数は、サブウィンドウが現在シェード状態(つまり、ウィンドウが折りたたまれてタイトルバーのみが表示されている状態)であるかどうかを検出します。シェードモードに入るには、showShaded() を呼び出します。 QMdiSubWindowは、ウィンドウの状態が変更されるたびに(例えば、ウィンドウが最小化されたり、元に戻されたりしたとき)、windowStateChanged()シグナルを発火します。また、アクティブ化される前にaboutToActivate()シグナルを発火します。
キーボード対話モードでは、ウィンドウはキーボード操作によって移動およびサイズ変更されます。このモードには、ウィンドウのシステムメニューから移行できます。keyboardSingleStep およびkeyboardPageStep プロパティは、キー押下イベントごとにウィジェットが移動またはサイズ変更される量を制御します。Shift キーが押されている場合はページ単位の移動が、そうでない場合は 1 ステップ単位の移動が行われます。
また、キーボードを使用してアクティブなウィンドウを切り替えることもできます。ControlキーとTabキーを同時に押すと、(現在のWindowOrder に基づいて)次のサブウィンドウがアクティブになります。Controlキー、Shiftキー、Tabキーを同時に押すと、前のウィンドウがアクティブになります。これは、activateNextSubWindow()およびactivatePreviousSubWindow()を呼び出すのと同じ効果があります。 これらのショートカットはグローバルなショートカットよりも優先されますが、QMdiAreaのショートカットには影響しない点に注意してください。
QMdiAreaも参照してください 。
メンバ型のドキュメント
enum QMdiSubWindow::SubWindowOption
flags QMdiSubWindow::SubWindowOptions
この列挙型は、QMdiSubWindow の動作をカスタマイズするためのオプションを表します。
| 定数 | 定数名値 | 説明 |
|---|---|---|
QMdiSubWindow::RubberBandResize | 0x4 | このオプションを有効にすると、サブウィンドウの輪郭を表すためにラバーバンドコントロールが使用され、ユーザーはサブウィンドウ自体ではなく、このラバーバンドコントロールのサイズを変更することになります。その結果、サブウィンドウはサイズ変更操作が完了するまで元の位置とサイズを維持し、その時点でQResizeEvent が 1 回呼び出されます。デフォルトでは、このオプションは無効になっています。 |
QMdiSubWindow::RubberBandMove | 0x8 | このオプションを有効にすると、サブウィンドウの輪郭を表すためにラバーバンドコントロールが使用され、ユーザーはサブウィンドウ自体ではなくこれを移動します。その結果、サブウィンドウは移動操作が完了するまで元の位置に留まり、その時点でQMoveEvent がウィンドウに送信されます。デフォルトでは、このオプションは無効になっています。 |
SubWindowOptions 型は、QFlags<SubWindowOption> の typedef です。これは、SubWindowOption 値の論理和(OR)を格納します。
プロパティのドキュメント
keyboardPageStep : int
キーボードのページキーを使用する際に、ウィジェットをどれだけ移動またはサイズ変更するかを設定します。
キーボードインタラクティブモードでは、矢印キーやページキーを使用してウィンドウを移動またはサイズ変更できます。このプロパティはページキーの動作を制御します。キーボードインタラクティブモードに入る一般的な方法は、サブウィンドウメニューを開き、「サイズ変更」または「移動」を選択することです。
キーボードのページキーによる移動量のデフォルト値は 20 ピクセルです。
アクセス関数:
| int | keyboardPageStep() const |
| void | setKeyboardPageStep(int step) |
関連項目: ` keyboardSingleStep`。
keyboardSingleStep : int
キーボードの矢印キーを使用する際に、ウィジェットをどの程度移動またはリサイズするかを設定します。
キーボード操作モードでは、矢印キーやページキーを使用してウィンドウを移動またはサイズ変更できます。このプロパティは矢印キーの動作を制御します。キーボード操作モードに入る一般的な方法は、サブウィンドウのメニューを開き、「サイズ変更」または「移動」を選択することです。
キーボードによる1ステップあたりのデフォルト値は5ピクセルです。
アクセス関数:
| int | keyboardSingleStep() const |
| void | setKeyboardSingleStep(int step) |
関連項目: keyboardPageStep 。
メンバ関数のドキュメント
QMdiSubWindow::QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
新しい QMdiSubWindow ウィジェットを作成します。parent およびflags の引数は、QWidget のコンストラクタに渡されます。
addSubWindow() を使用する代わりに、サブウィンドウをQMdiArea に追加する際には、単にsetParent() を使用することも可能です。
QMdiArea の子として設定できるのはQMdiSubWindowのみであることに注意してください。たとえば、次のように記述することはできません。
QMdiArea::addSubWindow()も参照してください 。
[virtual noexcept] QMdiSubWindow::~QMdiSubWindow()
サブウィンドウを破棄します。
QMdiArea::removeSubWindow()も参照してください 。
[signal] void QMdiSubWindow::aboutToActivate()
QMdiSubWindow このシグナルは、サブウィンドウがアクティブになる直前に発火します。サブウィンドウがアクティブになった後、そのサブウィンドウを管理するQMdiArea も、subWindowActivated()シグナルを発火します。
QMdiArea::subWindowActivated()も参照してください 。
[override virtual protected] void QMdiSubWindow::changeEvent(QEvent *changeEvent)
QWidget::changeEvent(QEvent *event) の再実装です。
[override virtual protected] void QMdiSubWindow::childEvent(QChildEvent *childEvent)
QObject::childEvent(QChildEvent *event) を再実装します。
[override virtual protected] void QMdiSubWindow::closeEvent(QCloseEvent *closeEvent)
QWidget::closeEvent(QCloseEvent *event) を再実装します。
[override virtual protected] void QMdiSubWindow::contextMenuEvent(QContextMenuEvent *contextMenuEvent)
QWidget::contextMenuEvent(QContextMenuEvent *event) を再実装します。
[override virtual protected] bool QMdiSubWindow::event(QEvent *event)
QWidget::event(QEvent *event) を再実装します。
[override virtual protected] bool QMdiSubWindow::eventFilter(QObject *object, QEvent *event)
QObject::eventFilter(QObject *watched, QEvent *event) を再実装します。
[override virtual protected] void QMdiSubWindow::focusInEvent(QFocusEvent *focusInEvent)
QWidget::focusInEvent(QFocusEvent *event) を再実装します。
[override virtual protected] void QMdiSubWindow::focusOutEvent(QFocusEvent *focusOutEvent)
QWidget::focusOutEvent(QFocusEvent *event) を再実装します。
[override virtual protected] void QMdiSubWindow::hideEvent(QHideEvent *hideEvent)
QWidget::hideEvent(QHideEvent *event) を再実装します。
bool QMdiSubWindow::isShaded() const
このウィンドウがシェード状態の場合は `true ` を返し、そうでない場合は `false` を返します。
ウィンドウが折りたたまれてタイトルバーのみが表示されている場合、そのウィンドウはシェード状態にあるとみなされます。
[override virtual protected] void QMdiSubWindow::keyPressEvent(QKeyEvent *keyEvent)
QWidget::keyPressEvent(QKeyEvent *event) を再実装します。
[override virtual protected] void QMdiSubWindow::leaveEvent(QEvent *leaveEvent)
QWidget::leaveEvent(QEvent *event) を再実装します。
QMdiArea *QMdiSubWindow::mdiArea() const
このサブウィンドウを含む領域を返します。該当する領域がない場合は、nullptr を返します。
QMdiArea::addSubWindow()も参照してください 。
[override virtual] QSize QMdiSubWindow::minimumSizeHint() const
プロパティ「QWidget::minimumSizeHint 」のアクセス関数を再実装します。
[override virtual protected] void QMdiSubWindow::mouseDoubleClickEvent(QMouseEvent *mouseEvent)
QWidget::mouseDoubleClickEvent(QMouseEvent *event) の再実装です。
[override virtual protected] void QMdiSubWindow::mouseMoveEvent(QMouseEvent *mouseEvent)
QWidget::mouseMoveEvent(QMouseEvent *event) を再実装します。
[override virtual protected] void QMdiSubWindow::mousePressEvent(QMouseEvent *mouseEvent)
QWidget::mousePressEvent(QMouseEvent *event) を再実装します。
[override virtual protected] void QMdiSubWindow::mouseReleaseEvent(QMouseEvent *mouseEvent)
QWidget::mouseReleaseEvent(QMouseEvent *event) を再実装します。
[override virtual protected] void QMdiSubWindow::moveEvent(QMoveEvent *moveEvent)
QWidget::moveEvent(QMoveEvent *event) を再実装します。
[override virtual protected] void QMdiSubWindow::paintEvent(QPaintEvent *paintEvent)
QWidget::paintEvent(QPaintEvent *event) を再実装します。
[override virtual protected] void QMdiSubWindow::resizeEvent(QResizeEvent *resizeEvent)
QWidget::resizeEvent(QResizeEvent *event) を再実装します。
警告: サブウィンドウを最大化または復元する際 、その結果としてこの関数が呼び出される際、QResizeEvent::oldSize() の引数が無効になる可能性があります。
void QMdiSubWindow::setOption(QMdiSubWindow::SubWindowOption option, bool on = true)
on が true の場合、サブウィンドウでoption が有効になります。そうでない場合は無効になります。各オプションの効果については、SubWindowOption を参照してください。
SubWindowOption およびtestOption()も参照してください 。
void QMdiSubWindow::setSystemMenu(QMenu *systemMenu)
このサブウィンドウの現在のシステムメニューとして「systemMenu 」を設定します。
デフォルトでは、各QMdiSubWindow には標準のシステムメニューが設定されています。
QMdiSubWindow によって作成されたシステムメニューの QAction は、現在のウィンドウの状態に応じて自動的に更新されます。たとえば、ウィンドウが最小化されると、最小化アクションは無効になります。
ユーザーによって追加された QActions は、QMdiSubWindow によって更新されることはありません。
QMdiSubWindow systemMenu の所有権を引き継ぎます。したがって、これを削除する必要はありません。既存のメニューはすべて削除されます。
systemMenu() およびshowSystemMenu()も参照してください 。
void QMdiSubWindow::setWidget(QWidget *widget)
widget をこのサブウィンドウの内部ウィジェットとして設定します。内部ウィジェットは、サブウィンドウのタイトルバーの下、中央に表示されます。
QMdiSubWindow widget を一時的に所有します。これを削除する必要はありません。既存の内部ウィジェットはすべて削除され、ルートウィンドウに再親付けされます。
widget()も参照してください 。
[override virtual protected] void QMdiSubWindow::showEvent(QShowEvent *showEvent)
QWidget::showEvent(QShowEvent *event) を再実装します。
[slot] void QMdiSubWindow::showShaded()
この関数を呼び出すと、サブウィンドウはシェーディングモードになります。サブウィンドウがシェーディング状態になると、タイトルバーのみが表示されます。
シェーディングはすべてのスタイルでサポートされているわけではありませんが、この関数は、シェーディングのサポートの有無にかかわらず、サブウィンドウをシェーディングされた状態として表示します。ただし、シェーディングをサポートしていないスタイルで使用した場合、ユーザーはユーザーインターフェース(たとえば、タイトルバーのシェーディングボタンなど)を介してシェーディングモードから復帰することができなくなります。
isShaded()も参照してください 。
[slot] void QMdiSubWindow::showSystemMenu()
タイトルバーのシステムメニューアイコンの下にシステムメニューを表示します。
setSystemMenu() およびsystemMenu()も参照してください 。
[override virtual] QSize QMdiSubWindow::sizeHint() const
プロパティ「QWidget::sizeHint 」のアクセス関数を再実装します。
QMenu *QMdiSubWindow::systemMenu() const
現在のシステムメニューへのポインタを返します。システムメニューが設定されていない場合は、0を返します。QMdiSubWindow はデフォルトのシステムメニューを提供しますが、setSystemMenu() を使用してメニューを設定することもできます。
setSystemMenu() およびshowSystemMenu()も参照してください 。
bool QMdiSubWindow::testOption(QMdiSubWindow::SubWindowOption option) const
option が有効な場合はtrue を返し、そうでない場合はfalse を返します。
SubWindowOption およびsetOption()も参照してください 。
[override virtual protected] void QMdiSubWindow::timerEvent(QTimerEvent *timerEvent)
QObject::timerEvent(QTimerEvent *event) を再実装します。
QWidget *QMdiSubWindow::widget() const
現在の内部ウィジェットを返します。
setWidget()も参照してください 。
[signal] void QMdiSubWindow::windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState)
QMdiSubWindow ウィンドウの状態が変化した後に、このシグナルを発行します。oldState は状態が変化する前のウィンドウの状態であり、newState は新しい現在の状態です。
© 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.