Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qdockwidget_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QDYNAMICDOCKWIDGET_P_H
5#define QDYNAMICDOCKWIDGET_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtWidgets/private/qtwidgetsglobal_p.h>
19#include "QtWidgets/qstyleoption.h"
20#include "private/qwidget_p.h"
21#include "QtWidgets/qboxlayout.h"
22#include "QtWidgets/qdockwidget.h"
23
24#if QT_CONFIG(tabwidget)
25# include "QtWidgets/qtabwidget.h"
26#endif
27
29
31
32class QGridLayout;
35class QSpacerItem;
36class QDockWidgetItem;
37
39{
40 Q_DECLARE_PUBLIC(QDockWidget)
41
42 struct DragState {
43 QPoint pressPos;
44 QPoint globalPressPos;
45 QPoint widgetInitialPos;
46 bool dragging;
47 QLayoutItem *widgetItem;
48 bool ownWidgetItem;
49 bool nca;
50 bool ctrlDrag;
51 };
52
53public:
54 void init();
55 void _q_toggleView(bool); // private slot
56 void _q_toggleTopLevel(); // private slot
57
58 void updateButtons();
60
61#if QT_CONFIG(tabwidget)
63#endif
64
65 DragState *state = nullptr;
66
67 QDockWidget::DockWidgetFeatures features = QDockWidget::DockWidgetClosable
69 Qt::DockWidgetAreas allowedAreas = Qt::AllDockWidgetAreas;
70
72
73#ifndef QT_NO_ACTION
75#endif
76
77// QMainWindow *findMainWindow(QWidget *widget) const;
81
86 void setWindowState(bool floating, bool unplug = false, const QRect &rect = QRect());
88 void initDrag(const QPoint &pos, bool nca);
89 void startDrag(bool group = true);
90 void endDrag(bool abort = false);
93
94 void unplug(const QRect &rect);
95 void plug(const QRect &rect);
96 void setResizerActive(bool active);
97
98 bool isAnimating() const;
99
100private:
101 QWidgetResizeHandler *resizer = nullptr;
102};
103
104class Q_WIDGETS_EXPORT QDockWidgetLayout : public QLayout
105{
107public:
108 QDockWidgetLayout(QWidget *parent = nullptr);
110 void addItem(QLayoutItem *item) override;
111 QLayoutItem *itemAt(int index) const override;
112 QLayoutItem *takeAt(int index) override;
113 int count() const override;
114
115 QSize maximumSize() const override;
116 QSize minimumSize() const override;
117 QSize sizeHint() const override;
118
119 QSize sizeFromContent(const QSize &content, bool floating) const;
120
121 void setGeometry(const QRect &r) override;
122
123 enum Role { Content, CloseButton, FloatButton, TitleBar, RoleCount };
124 QWidget *widgetForRole(Role r) const;
125 void setWidgetForRole(Role r, QWidget *w);
126 QLayoutItem *itemForRole(Role r) const;
127
128 QRect titleArea() const { return _titleArea; }
129
130 int minimumTitleWidth() const;
131 int titleHeight() const;
133 static bool wmSupportsNativeWindowDeco();
134 bool nativeWindowDeco() const;
135 bool nativeWindowDeco(bool floating) const;
136
137 void setVerticalTitleBar(bool b);
138
140
141private:
142 QList<QLayoutItem *> item_list;
143 QRect _titleArea;
144};
145
146/* The size hints of a QDockWidget will depend on whether it is docked or not.
147 This layout item always returns the size hints as if the dock widget was docked. */
148
150{
151public:
153 QSize minimumSize() const override;
154 QSize maximumSize() const override;
155 QSize sizeHint() const override;
156
157private:
158 inline QLayoutItem *dockWidgetChildItem() const;
159 inline QDockWidgetLayout *dockWidgetLayout() const;
160};
161
162inline QLayoutItem *QDockWidgetItem::dockWidgetChildItem() const
163{
164 if (QDockWidgetLayout *layout = dockWidgetLayout())
165 return layout->itemForRole(QDockWidgetLayout::Content);
166 return nullptr;
167}
168
169inline QDockWidgetLayout *QDockWidgetItem::dockWidgetLayout() const
170{
171 QWidget *w = widget();
172 if (w != nullptr)
173 return qobject_cast<QDockWidgetLayout*>(w->layout());
174 return nullptr;
175}
176
178
179#endif // QDYNAMICDOCKWIDGET_P_H
The QAction class provides an abstraction for user commands that can be added to different user inter...
Definition qaction.h:30
QSize minimumSize() const override
Implemented in subclasses to return the minimum size of this item.
QSize maximumSize() const override
Implemented in subclasses to return the maximum size of this item.
QSize sizeHint() const override
Implemented in subclasses to return the preferred size of this item.
QRect titleArea() const
static Qt::DockWidgetArea toDockWidgetArea(QInternal::DockPosition pos)
void plug(const QRect &rect)
void startDrag(bool group=true)
bool isAnimating() const
void setResizerActive(bool active)
QAction * toggleViewAction
void setWindowState(bool floating, bool unplug=false, const QRect &rect=QRect())
void moveEvent(QMoveEvent *event)
void initDrag(const QPoint &pos, bool nca)
void _q_toggleView(bool)
void nonClientAreaMouseEvent(QMouseEvent *event)
bool mouseDoubleClickEvent(QMouseEvent *event)
void endDrag(bool abort=false)
bool mousePressEvent(QMouseEvent *event)
void recalculatePressPos(QResizeEvent *event)
Qt::DockWidgetAreas allowedAreas
bool mouseReleaseEvent(QMouseEvent *event)
bool mouseMoveEvent(QMouseEvent *event)
void unplug(const QRect &rect)
QDockWidget::DockWidgetFeatures features
The QDockWidget class provides a widget that can be docked inside a QMainWindow or floated as a top-l...
Definition qdockwidget.h:20
@ DockWidgetFloatable
Definition qdockwidget.h:41
\reentrant
Definition qfont.h:20
The QGridLayout class lays out widgets in a grid.
Definition qgridlayout.h:21
The QLayoutItem class provides an abstract item that a QLayout manipulates.
Definition qlayoutitem.h:25
virtual QLayout * layout()
If this item is a QLayout, it is returned as a QLayout; otherwise \nullptr is returned.
virtual QSize sizeHint() const =0
Implemented in subclasses to return the preferred size of this item.
The QLayout class is the base class of geometry managers.
Definition qlayout.h:26
QSize maximumSize() const override
Returns the maximum size of this layout.
Definition qlayout.cpp:926
virtual void addItem(QLayoutItem *)=0
Implemented in subclasses to add an item.
virtual QLayoutItem * itemAt(int index) const =0
Must be implemented in subclasses to return the layout item at index.
virtual QLayoutItem * takeAt(int index)=0
Must be implemented in subclasses to remove the layout item at index from the layout,...
QSize minimumSize() const override
Returns the minimum size of this layout.
Definition qlayout.cpp:911
virtual int count() const =0
Must be implemented in subclasses to return the number of items in the layout.
virtual void setGeometry(const QRect &) override
\reimp
Definition qlayout.cpp:451
Definition qlist.h:74
\inmodule QtGui
Definition qevent.h:195
The QMoveEvent class contains event parameters for move events.
Definition qevent.h:501
\inmodule QtCore\reentrant
Definition qpoint.h:23
\inmodule QtCore\reentrant
Definition qrect.h:30
The QResizeEvent class contains event parameters for resize events.
Definition qevent.h:547
\inmodule QtCore
Definition qsize.h:25
The QSpacerItem class provides blank space in a layout.
Definition qlayoutitem.h:57
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
TabPosition
This enum type defines where QTabWidget draws the tab row:
Definition qtabwidget.h:74
The QWidgetItem class is a layout item that represents a widget.
Definition qlayoutitem.h:86
QWidget * widget() const override
Returns the widget managed by this item.
The QWidget class is the base class of all user interface objects.
Definition qwidget.h:99
rect
[4]
Combined button and popup list for selecting options.
DockWidgetArea
@ AllDockWidgetAreas
GLboolean GLboolean GLboolean b
GLfloat GLfloat GLfloat w
[0]
GLuint index
[2]
GLboolean r
[2]
GLboolean GLuint group
struct _cl_event * event
#define QT_REQUIRE_CONFIG(feature)
#define Q_OBJECT
QGraphicsItem * item
QDockWidget * dockWidget
[0]
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent