QDockWidget Class

QDockWidget クラスは、QMainWindow 内にドッキングしたり、デスクトップ上のトップレベル・ウィンドウとしてフローティングできるウィジェットを提供します。詳細...

Header: #include <QDockWidget>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: 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
QDockWidget::DockWidgetFeatures features() const
bool isAreaAllowed(Qt::DockWidgetArea area) const
bool isFloating() const
void setAllowedAreas(Qt::DockWidgetAreas areas)
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は、ツールパレットやユーティリティウィンドウとしても知られているドックウィジェットの概念を提供します。ドックウィンドウは、QMainWindowcentral 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::DockWidgetClosable0x01ドックウィジェットを閉じることができます。
QDockWidget::DockWidgetMovable0x02ドックウィジェットは、ユーザーによってドック間で移動できます。
QDockWidget::DockWidgetFloatable0x04ドックウィジェットはメインウィンドウから切り離し、独立したウィンドウとしてフロートさせることができます。
QDockWidget::DockWidgetVerticalTitleBar0x08ドックウィジェットは左側に垂直のタイトルバーを表示します。これは、QMainWindow の垂直スペースを増やすために使用できます。
QDockWidget::NoDockWidgetFeatures0x00ドックウィジェットを閉じたり、移動したり、フロートさせたりすることはできません。

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

プロパティの説明

allowedAreas : Qt::DockWidgetAreas

ドックウィジェットを配置できる領域

デフォルトはQt::AllDockWidgetAreas

アクセス関数

Qt::DockWidgetAreas allowedAreas() const
void setAllowedAreas(Qt::DockWidgetAreas areas)

Notifierシグナル:

void allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)

Qt::DockWidgetAreaも参照してください

features : DockWidgetFeatures

このプロパティは、ドックウィジェットが移動可能かどうか、閉じられるかどうか、浮動可能かどうかを保持します。

デフ ォル ト では、 こ のプ ロ パテ ィ はDockWidgetClosableDockWidgetMovableDockWidgetFloatable の組み合わせに設定 さ れてい ます。

アクセス関数:

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 &)

Notifier シグナル:

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 に移動したり、現在のドック領域内の別の場所に移動したときに発行されます。これは、ドックウィジェットがプログラムによって移動されたり、ユーザーによって新しい場所にドラッグされたときに発生します。

[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)。

void QDockWidget::setTitleBarWidget(QWidget *widget)

任意のwidget をドックウィジェットのタイトルバーとして設定します。widgetnullptr の場合、ドックウィジェットに以前設定されていたカスタムタイトルバーウィジェットは削除されますが、削除はされず、代わりにデフォルトタイトルバーが使用されます。

タイトルバーウィジェットが設定されている場合、QDockWidget はフローティングされてもネイティブのウィンドウ装飾を使用しません。

カスタム・タイトルバーを実装するためのヒントをいくつか紹介します:

  • タイトル・バー・ウィジェットによって明示的に処理されないマウス・イベントは、QMouseEvent::ignore ()を呼び出して無視する必要があります。これらのイベントは、QDockWidget の親に伝搬されます。親は、タイトル・バーがドラッグされたときの移動や、ダブルクリックされたときのドッキングとドッキング解除など、通常の方法でイベントを処理します。
  • DockWidgetVerticalTitleBarQDockWidget に設定されると、それに応じてタイトルバー・ウィジェットの位置が変更されます。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

ユーザがこのドック・ウィジェットを表示したり閉じたりできるように、メニューやツールバーに追加できるチェック可能なアクションを返します。

アクションのテキストはドックウィジェットのウィンドウタイトルに設定されます。

注意: このアクションは、プログラムでドックウィジェットの表示/非表示を切り替えるために使用することはできません。それにはvisible プロパティを使用してください。

QAction::textQWidget::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

ドックウィジェットのウィジェットを返します。ウィジェットが設定されていない場合、この関数は0を返します。

setWidget()も参照してください

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