QDockWidget Class
QDockWidget クラスは、QMainWindow 内にドッキングしたり、デスクトップ上のトップレベル・ウィンドウとしてフローティングできるウィジェットを提供します。詳細...
ヘッダー | #include <QDockWidget> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
継承: | QWidget |
パブリックな型
enum | DockWidgetFeature { DockWidgetClosable, DockWidgetMovable, DockWidgetFloatable, DockWidgetVerticalTitleBar, NoDockWidgetFeatures } |
flags | DockWidgetFeatures |
プロパティ
|
|
パブリック機能
QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
QDockWidget(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
virtual | ~QDockWidget() |
Qt::DockWidgetAreas | allowedAreas() const |
Qt::DockWidgetArea | dockLocation() const |
QDockWidget::DockWidgetFeatures | features() const |
bool | isAreaAllowed(Qt::DockWidgetArea area) const |
bool | isFloating() const |
void | setAllowedAreas(Qt::DockWidgetAreas areas) |
(since 6.9) void | setDockLocation(Qt::DockWidgetArea area) |
void | setFeatures(QDockWidget::DockWidgetFeatures features) |
void | setFloating(bool floating) |
void | setTitleBarWidget(QWidget *widget) |
void | setWidget(QWidget *widget) |
QWidget * | titleBarWidget() const |
QAction * | toggleViewAction() const |
QWidget * | widget() const |
シグナル
void | allowedAreasChanged(Qt::DockWidgetAreas allowedAreas) |
void | dockLocationChanged(Qt::DockWidgetArea area) |
void | featuresChanged(QDockWidget::DockWidgetFeatures features) |
void | topLevelChanged(bool topLevel) |
void | visibilityChanged(bool visible) |
プロテクト関数
virtual void | initStyleOption(QStyleOptionDockWidget *option) const |
再実装されたプロテクト関数
virtual void | changeEvent(QEvent *event) override |
virtual void | closeEvent(QCloseEvent *event) override |
virtual bool | event(QEvent *event) override |
virtual void | paintEvent(QPaintEvent *event) override |
詳細説明
QDockWidgetは、ツールパレットやユーティリティウィンドウとしても知られているドックウィジェットの概念を提供します。ドックウィンドウは、QMainWindow のcentral widget の周りのドックウィジェットエリアに配置されるセカンダリウィンドウです。
ドック・ウィンドウは、エンドユーザーによって、現在の領域内に移動したり、新しい領域に移動したり、フローティング(例えば、ドック解除)したりすることができます。QDockWidget APIにより、プログラマはドックウィジェットの移動、フローティング、クローズ、および配置可能な領域を制限することができます。
外観
QDockWidgetはタイトルバーとコンテンツエリアから構成されます。タイトルバーには、ドックウィジェットwindow title 、フロートボタン、クローズボタンが表示されます。QDockWidgetの状態によっては、フロートボタンとクローズボタンは無効になったり、全く表示されなかったりします。
タイトルバーとボタンの外観は、style に依存します。
QDockWidgetは、setWidget()で設定された子ウィジェットのラッパーとして動作します。カスタムサイズヒント、最小サイズ、最大サイズ、およびサイズポリシーは、子ウィジェットで実装する必要があります。QDockWidgetはそれらを尊重し、フレームとタイトルを含むように自身の制約を調整します。ドッキングされたQDockWidgetは、フレームがなく、タイトルバーが小さくなります。
注意: macOS上で、QDockWidgetがネイティブ・ウィンドウ・ハンドルを持っている場合(例えば、winId()がQDockWidgetまたは子ウィジェット上で呼び出された場合)、制限により、ドッキング解除時にドック・ウィジェットをドラッグすることができません。ドラッグを開始すると、ドックウィジェットのドックは解除されますが、ドックウィジェット自体を移動するには、2回目のドラッグが必要になります。
QMainWindowも参照してください 。
メンバ型ドキュメント
enum QDockWidget::DockWidgetFeature
flags QDockWidget::DockWidgetFeatures
定数 | 値 | 説明 |
---|---|---|
QDockWidget::DockWidgetClosable | 0x01 | ドックウィジェットを閉じることができます。 |
QDockWidget::DockWidgetMovable | 0x02 | ドックウィジェットは、ユーザーによってドック間で移動できます。 |
QDockWidget::DockWidgetFloatable | 0x04 | ドックウィジェットはメインウィンドウから切り離し、独立したウィンドウとしてフロートさせることができます。 |
QDockWidget::DockWidgetVerticalTitleBar | 0x08 | ドックウィジェットは左側に垂直のタイトルバーを表示します。これは、QMainWindow の垂直スペースを増やすために使用できます。 |
QDockWidget::NoDockWidgetFeatures | 0x00 | ドックウィジェットを閉じたり、移動したり、フロートさせたりすることはできません。 |
DockWidgetFeatures 型はQFlags<DockWidgetFeature> の typedef です。これは、DockWidgetFeature値のORの組み合わせを格納します。
プロパティ ドキュメント
allowedAreas : Qt::DockWidgetAreas
ドックウィジェットを配置できる領域
デフォルトはQt::AllDockWidgetAreas です。
アクセス関数
Qt::DockWidgetAreas | allowedAreas() const |
void | setAllowedAreas(Qt::DockWidgetAreas areas) |
通知シグナル:
void | allowedAreasChanged(Qt::DockWidgetAreas allowedAreas) |
Qt::DockWidgetAreaも参照してください 。
[since 6.9]
dockLocation : Qt::DockWidgetArea
このプロパティは、現在のドックの位置、またはこのドックウィジェットがフローティングであるか、メインウィンドウの親がない場合は Qt::NoDockLocation を保持します。
このプロパティは Qt 6.9 で導入されました。
アクセス関数です:
Qt::DockWidgetArea | dockLocation() const |
void | setDockLocation(Qt::DockWidgetArea area) |
通知シグナル
void | dockLocationChanged(Qt::DockWidgetArea area) |
features : DockWidgetFeatures
このプロパティは、ドックウィジェットが移動可能か、閉鎖可能か、浮動可能かを保持する。
デフォルトでは、このプロパティはDockWidgetClosable,DockWidgetMovable,DockWidgetFloatable の組み合わせに設定されています。
アクセス関数
QDockWidget::DockWidgetFeatures | features() const |
void | setFeatures(QDockWidget::DockWidgetFeatures features) |
Notifier シグナル:
void | featuresChanged(QDockWidget::DockWidgetFeatures features) |
DockWidgetFeatureも参照してください 。
floating : bool
このプロパティは、ドックウィジェットがフローティングであるかどうかを保持します。
フローティングドックウィジェットは、QMainWindow やタブドックウィジェットのグループにドッキングされるのではなく、親ウィジェットQMainWindow の "上に "独立した単一のウィンドウとしてユーザに表示されます。
フローティング・ドック・ウィジェットは、プログラムでもマウス操作でも、個別に位置やサイズを変更できます。
デフォルトでは、このプロパティはtrue
です。
このプロパティが変更されると、topLevelChanged()
シグナルが発信されます。
アクセス関数
bool | isFloating() const |
void | setFloating(bool floating) |
Notifier シグナル:
void | topLevelChanged(bool topLevel) |
isWindow() およびtopLevelChanged()も参照してください 。
windowTitle : QString
このプロパティは、ドックウィジェットのタイトル(キャプション)を保持します。
デフォルトでは、このプロパティには空の文字列が格納されます。
アクセス関数
QString | windowTitle() const |
void | setWindowTitle(const QString &) |
通知シグナル
void | windowTitleChanged(const QString &title) |
メンバ関数ドキュメント
[explicit]
QDockWidget::QDockWidget(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
親parent とウィンドウフラグflags を持つ QDockWidget を構築します。ドックウィジェットは左のドックウィジェットエリアに配置されます。
[explicit]
QDockWidget::QDockWidget(const QString &title, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
親parent とウィンドウフラグflags を持つ QDockWidget を構築します。ドックウィジェットは左のドックウィジェットエリアに配置されます。
ウィンドウタイトルはtitle に設定されます。このタイトルはQDockWidgetがドックされた時とドック解除された時に使用されます。また、QMainWindow によって提供されるコンテキストメニューでも使用されます。
setWindowTitle()も参照してください 。
[virtual noexcept]
QDockWidget::~QDockWidget()
ドックウィジェットを破壊する。
[signal]
void QDockWidget::allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)
このシグナルは、allowedAreas プロパティが変更されたときに発信される。allowedAreas パラメータには、プロパティの新しい値を指定します。
注: allowedAreas プロパティに対するノーティファイア・シグナル。
[override virtual protected]
void QDockWidget::changeEvent(QEvent *event)
再実装:QWidget::changeEvent(QEvent *event)。
[override virtual protected]
void QDockWidget::closeEvent(QCloseEvent *event)
再実装:QWidget::closeEvent(QCloseEvent *event)。
[signal]
void QDockWidget::dockLocationChanged(Qt::DockWidgetArea area)
このシグナルは、ドックウィジェットが別のドックarea に移動したとき、または現在のドック領域内の別の場所に移動したときに発行されます。これは、ドックウィジェットがプログラムによって移動されるか、ユーザによって新しい場所にドラッグされたときに発生します。
注: プロパティdockLocation に対するノーティファイアシグナル。
dockLocation() およびsetDockLocation()も参照してください 。
[override virtual protected]
bool QDockWidget::event(QEvent *event)
再実装:QWidget::event(QEvent *event)。
[signal]
void QDockWidget::featuresChanged(QDockWidget::DockWidgetFeatures features)
このシグナルは、features プロパティが変更されたときに発信される。features パラメータには、プロパティの新しい値を指定します。
注: features プロパティに対するノーティファイア・シグナル。
[virtual protected]
void QDockWidget::initStyleOption(QStyleOptionDockWidget *option) const
QDockWidget の値でoption を初期化する。このメソッドは、サブクラスがQStyleOptionDockWidget を必要とするが、すべての情報を自分で入力したくない場合に便利です。
QStyleOption::initFrom()も参照 。
bool QDockWidget::isAreaAllowed(Qt::DockWidgetArea area) const
このドックウィジェットが与えられたarea に配置できる場合はtrue
を返し、そうでない場合はfalse
を返します。
[override virtual protected]
void QDockWidget::paintEvent(QPaintEvent *event)
再実装:QWidget::paintEvent(QPaintEvent *event)。
[since 6.9]
void QDockWidget::setDockLocation(Qt::DockWidgetArea area)
このドックウィジェットをarea に割り当てます。 別のドック位置にドッキングされている場合、area に移動します。 フローティングまたはフローティングタブの一部である場合、次にsetFloating(false) を呼び出すと、area にドッキングされます。
注意: setDockLocation(Qt::NoDockLocation) はsetFloating(true) と同じです。
注: プロパティdockLocation のセッター関数です。
この関数は Qt 6.9 で導入されました。
dockLocation() とdockLocationChanged()も参照してください 。
void QDockWidget::setTitleBarWidget(QWidget *widget)
任意のwidget をドックウィジェットのタイトルバーとして設定します。widget がnullptr
の場合、以前にドックウィジェットに設定されたカスタムタイトルバーウィジェットは削除されますが、削除はされず、代わりにデフォルトタイトルバーが使用されます。
タイトルバーウィジェットが設定されている場合、QDockWidget はフローティングされてもネイティブのウィンドウ装飾を使用しません。
カスタム・タイトルバーを実装するためのヒントをいくつか紹介します:
- タイトル・バー・ウィジェットによって明示的に処理されないマウス・イベントは、QMouseEvent::ignore ()を呼び出して無視する必要があります。これらのイベントは、QDockWidget の親に伝搬されます。親は、タイトル・バーがドラッグされたときの移動や、ダブルクリックされたときのドッキングとドッキング解除など、通常の方法でイベントを処理します。
- DockWidgetVerticalTitleBar がQDockWidget に設定されると、それに応じてタイトルバー・ウィジェットの位置が変更されます。resizeEvent() では、タイトル・バーがどのような向きになるかをチェックする必要があります:
QDockWidget *dockWidget = qobject_cast<QDockWidget*>(parentWidget()); if (dockWidget->features() & QDockWidget::DockWidgetVerticalTitleBar) { // I need to be vertical } else { // I need to be horizontal }
- タイトル・バー・ウィジェットは、有効なQWidget::sizeHint() とQWidget::minimumSizeHint() を持っていなければならない。これらの関数は、タイトル・バーの現在の向きを考慮する必要があります。
- ドック・ウィジェットからタイトル・バーを削除することはできません。しかし、デフォルトで構築されたQWidget をタイトルバー・ウィジェットとして設定することで、同様の効果を得ることができます。
上記のようにqobject_cast() を使用すると、タイトルバー・ウィジェットは親QDockWidget に完全にアクセスできます。したがって、ユーザーの操作に応じて、ドッキングや非表示などの操作を実行できます。
titleBarWidget() およびDockWidgetVerticalTitleBarも参照して ください。
void QDockWidget::setWidget(QWidget *widget)
ドックウィジェットのウィジェットをwidget に設定します。
widget が追加されたときにドック・ウィジェットが表示されている場合は、show() を明示的に追加する必要があります。
この関数を呼び出す前に、widget のレイアウトを追加する必要があることに注意してください。そうしないと、widget は表示されません。
widget()も参照してください 。
QWidget *QDockWidget::titleBarWidget() const
QDockWidgetカスタム・タイトル・バーが設定されていない場合はnullptr
を返します。
setTitleBarWidget()も参照してください 。
QAction *QDockWidget::toggleViewAction() const
ユーザーがこのドックウィジェットを表示したり閉じたりできるように、メニューやツールバーに追加できるチェック可能なアクションを返します。
アクションのテキストは、ドックウィジェットのウィンドウタイトルに設定されます。
QAction オブジェクトはQDockWidget によって所有されます。QDockWidget が破棄されると、自動的に削除されます。
注意: このアクションは、プログラムでドックウィジェットを表示したり隠したりするために使用することはできません。その場合はvisible プロパティを使用してください。
QAction::text およびQWidget::windowTitleも参照して ください。
[signal]
void QDockWidget::topLevelChanged(bool topLevel)
このシグナルは、floating プロパティが変更されたときに発行される。ドックウィジェットがフローティングになった場合、topLevel パラメータは true になり、そうでない場合は false になります。
注意: floating プロパティの通知シグナルです。
isWindow()も参照してください 。
[signal]
void QDockWidget::visibilityChanged(bool visible)
このシグナルは、ドックウィジェットがvisible (または不可視) になったときに発せられます。これは、ウィジェットが非表示または表示されたときと、タブドックエリアにドッキングされ、そのタブが選択または非選択になったときに発生します。
注意: シグナルはQWidget::isVisible() と異なる場合があります。これは、ドックウィジェットが最小化またはタブ化され、非選択または非アクティブなタブに関連付けられた場合に起こり得ます。
QWidget *QDockWidget::widget() const
ドックウィジェットのウィジェットを返します。ウィジェットが設定されていない場合、この関数はゼロを返します。
setWidget()も参照してください 。
© 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.