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 |
プロパティ
- allowedAreas : Qt::DockWidgetAreas
- features : DockWidgetFeatures
- floating : bool
- windowTitle : QString
パブリック関数
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は、ツールパレットやユーティリティウィンドウとしても知られているドックウィジェットの概念を提供します。ドックウィンドウは、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) |
Notifierシグナル:
void | allowedAreasChanged(Qt::DockWidgetAreas allowedAreas) |
Qt::DockWidgetAreaも参照してください 。
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 &) |
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 をドックウィジェットのタイトルバーとして設定します。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
ユーザがこのドック・ウィジェットを表示したり閉じたりできるように、メニューやツールバーに追加できるチェック可能なアクションを返します。
アクションのテキストはドックウィジェットのウィンドウタイトルに設定されます。
注意: このアクションは、プログラムでドックウィジェットの表示/非表示を切り替えるために使用することはできません。それには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
ドックウィジェットのウィジェットを返します。ウィジェットが設定されていない場合、この関数は0を返します。
setWidget()も参照してください 。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。