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

プロパティ

パブリック関数

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() を発信します。

キーボード対話型モードでは、ウィンドウの移動とサイズ変更はキーボードで行う。ウィンドウのシステム・メニューからこのモードに入ることができる。keyboardSingleStepkeyboardPageStep プロパティは、各キープレス・イベントに対してウィジェットが移動またはサイズ変更される距離を制御します。シフトが押し下げられるとページ・ステップが使用され、そうでなければシングル・ステップが使用されます。

キーボードでアクティブ・ウィンドウを変更することもできます。controlキーとtabキーを同時に押すと、次の(現在のWindowOrder )サブウィンドウがアクティブになります。controlキーとshiftキーとtabキーを同時に押すと、前のウィンドウがアクティブになります。これはactivateNextSubWindow() とactivatePreviousSubWindow() を呼び出すのと同じです。これらのショートカットはグローバル・ショートカットを上書きしますが、QMdiAreaのショートカットは上書きしないことに注意してください。

QMdiAreaも参照のこと

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

enum QMdiSubWindow::SubWindowOption
flags QMdiSubWindow::SubWindowOptions

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

定数説明
QMdiSubWindow::RubberBandResize0x4このオプションを有効にすると、サブウィンドウのアウトラインを表現するためにラバーバンドコントロールが使用され、ユーザーはサブウィンドウ自体の代わりにこれをリサイズします。その結果、サブウィンドウは、リサイズ操作が完了するまで、元の位置とサイズを維持し、その時点で単一のQResizeEvent を受け取ります。デフォルトでは、このオプションは無効になっています。
QMdiSubWindow::RubberBandMove0x8このオプションを有効にすると、サブウィンドウのアウトラインを表すためにラバーバンドコントロールが使用され、ユーザーはサブウィンドウ自体の代わりにこれを動かします。その結果、サブウィンドウは移動操作が完了するまで元の位置に留まり、その時点でウィンドウにQMoveEvent 。デフォルトでは、このオプションは無効になっています。

SubWindowOptions 型はQFlags<SubWindowOption> の typedef です。これは、SubWindowOption 値の OR の組み合わせを格納します。

プロパティの説明

keyboardPageStep : int

は、キーボードのページ・キーを使用したときに、ウィジェットが移動またはサイズ変更する範囲を設定します。

キーボード・インタラクティブ・モードでは、矢印キーとページ・キーを使用してウィンドウを移動またはサイズ変更することができます。このプロパティは、ページキーを制御します。キーボード対話型モードに入る一般的な方法は、サブウィンドウメニューに入り、"resize "か "move "を選択することです。

デフォルトのキーボードページステップ値は20ピクセルである。

アクセス関数:

int keyboardPageStep() const
void setKeyboardPageStep(int step)

keyboardSingleStepも参照してください

keyboardSingleStep : int

は、キーボードの矢印キーを使用したときに、ウィジェットが移動またはサイズ変更する範囲を設定します。

キーボード・インタラクティブ・モードでは、矢印キーとページ・キーを使用してウィンドウを移動またはサイズ変更できます。このプロパティは、矢印キーを制御します。キーボード対話型モードに入る一般的な方法は、サブウィンドウメニューに入り、"resize "か "move "を選択することです。

デフォルトのキーボード1ステップ値は5ピクセルである。

アクセス関数:

int keyboardSingleStep() const
void setKeyboardSingleStep(int step)

keyboardPageStepも参照してください

メンバー関数ドキュメント

QMdiSubWindow::QMdiSubWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

新しい QMdiSubWindow ウィジェットを構築します。parentflags の引数はQWidget のコンストラクタに渡されます。

サブウィンドウをQMdiArea に追加する場合、addSubWindow() を使用する代わりに、setParent() を使用することもできます。

QMdiArea の子として設定できるのはQMdiSubWindowだけであることに注意:

//bad code
QMdiArea mdiArea;
QTextEdit editor(&mdiArea); // invalid child widget

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は、現在のウィンドウの状態に応じて自動的に更新されます。例えば、ウィンドウが最小化されると、最小化アクションは無効になります。

ユーザーによって追加されたQActionは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

現在のシステム・メニューへのポインタを返すか、システム・メニューが設定されていなけれ ばゼロを返す。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

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