QMdiSubWindow Class

QMdiSubWindow クラスは、QMdiArea 用のサブウィンドウ・クラスを提供します。詳細...

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

再リンプルメント: (QChildEvent *event):QWidget::closeEvent(QCloseEvent *event)。

[override virtual protected] void QMdiSubWindow::contextMenuEvent(QContextMenuEvent *contextMenuEvent)

再リンプルメント:QWidget::contextMenuEvent(QContextMenuEvent *event)。

[override virtual protected] bool QMdiSubWindow::event(QEvent *event)

再リンプルメント: (QContextMenuEvent *event):QWidget::event(QEvent *event)。

[override virtual protected] bool QMdiSubWindow::eventFilter(QObject *object, QEvent *event)

再リンプルメント: (QEvent *event):QObject::eventFilter(QObject *watched, QEvent *event)。

[override virtual protected] void QMdiSubWindow::focusInEvent(QFocusEvent *focusInEvent)

再リンプルメント: (QObject *watched, QEvent *event):QWidget::focusInEvent(QFocusEvent *event)。

[override virtual protected] void QMdiSubWindow::focusOutEvent(QFocusEvent *focusOutEvent)

再リンプルメント: (QFocusEvent *event):QWidget::focusOutEvent(QFocusEvent *event)。

[override virtual protected] void QMdiSubWindow::hideEvent(QHideEvent *hideEvent)

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

再リンプルメント: (QMouseEvent *event)QWidget::mouseReleaseEvent(QMouseEvent *event).

[override virtual protected] void QMdiSubWindow::moveEvent(QMoveEvent *moveEvent)

再リンプルメント: (QMouseEvent *event)QWidget::moveEvent(QMoveEvent *event)。

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

再リンプルメント: (QMoveEvent *event):QWidget::paintEvent(QPaintEvent *event)。

[override virtual protected] void QMdiSubWindow::resizeEvent(QResizeEvent *resizeEvent)

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

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