KDDockWidgets API Documentation  1.4
KDDockWidgets.h
Go to the documentation of this file.
1 /*
2  This file is part of KDDockWidgets.
3 
4  SPDX-FileCopyrightText: 2019-2021 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
5  Author: SĂ©rgio Martins <sergio.martins@kdab.com>
6 
7  SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
8 
9  Contact KDAB at <info@kdab.com> for commercial licensing options.
10 */
11 
19 #ifndef KD_KDDOCKWIDGETS_H
20 #define KD_KDDOCKWIDGETS_H
21 
22 #include "docks_export.h"
23 #include "Qt5Qt6Compat_p.h"
24 
25 #include <QObject>
26 #include <QDebug>
27 
28 #ifdef Q_OS_WIN
29 // Only on Windows, where this is popular. On linux the Qt::Tool windows need reparenting. Untested on macOS.
30 #define KDDOCKWIDGETS_SUPPORTS_NESTED_MAINWINDOWS
31 #endif
32 
33 namespace Layouting {
34 class Item;
35 class ItemBoxContainer;
36 }
37 
38 namespace KDDockWidgets {
39 DOCKS_EXPORT
40 Q_NAMESPACE
41 class MultiSplitter;
42 class DropArea;
43 
45 {
51 };
52 Q_ENUM_NS(Location)
53 
55 {
59 };
60 Q_DECLARE_FLAGS(MainWindowOptions, MainWindowOption)
61 Q_ENUM_NS(MainWindowOptions)
62 
63 enum class DefaultSizeMode
68 {
69  ItemSize,
70  Fair,
71  FairButFloor,
73 };
74 Q_ENUM_NS(DefaultSizeMode)
75 
76 enum AddingOption
79 {
82 };
83 Q_ENUM_NS(AddingOption)
84 
86 {
87  StartVisible = 0,
89 };
90 Q_ENUM_NS(InitialVisibilityOption)
91 
92 
103 {
104  // Implicit ctors for convenience:
105 
106  InitialOption() = default;
107 
109  : visibility(v)
110  {
111  }
112 
114  : preferredSize(size)
115  {
116  }
117 
119  : visibility(v)
120  , preferredSize(size)
121  {
122  }
123 
124  QT_DEPRECATED_X("AddingOption is deprecated and will be removed in v1.5. Use InitialVisibilityOption instead.")
126  : visibility(opt == AddingOption_StartHidden ? InitialVisibilityOption::StartHidden
127  : InitialVisibilityOption::StartVisible)
128  {
129  }
130 
131  bool startsHidden() const
132  {
133  return visibility == InitialVisibilityOption::StartHidden;
134  }
135 
137  {
138  return o == Qt::Horizontal ? preferredSize.width()
139  : preferredSize.height();
140  }
141 
143  {
144  return preferredLength(o) > 0;
145  }
146 
153  InitialVisibilityOption visibility = InitialVisibilityOption::StartVisible;
154 
165 
166 private:
167  friend class Layouting::Item;
168  friend class Layouting::ItemBoxContainer;
169  friend class KDDockWidgets::MultiSplitter;
170  friend class KDDockWidgets::DropArea;
171 
173  : sizeMode(mode)
174  {
175  }
176 
177  DefaultSizeMode sizeMode = DefaultSizeMode::Fair;
178 };
179 
181 {
184 };
186 Q_DECLARE_FLAGS(RestoreOptions, RestoreOption)
187 Q_ENUM_NS(RestoreOptions)
188 
190 {
191  Classic,
192  Segmented,
193  None
194 };
195 Q_ENUM_NS(DropIndicatorType)
196 
199 {
203 };
204 Q_DECLARE_FLAGS(SuggestedGeometryHints, SuggestedGeometryHint)
205 Q_ENUM_NS(SuggestedGeometryHint)
206 
207 enum class SideBarLocation
209 {
210  None,
211  North,
212  East,
213  West,
214  South
215 };
216 
219 {
220  Close,
221  Float,
222  Minimize,
223  Maximize,
224  Normal, // Restore from maximized state
225  AutoHide,
226  UnautoHide
227 };
228 Q_ENUM_NS(TitleBarButtonType)
229 
230 inline Qt5Qt6Compat::qhashtype qHash(SideBarLocation loc, Qt5Qt6Compat::qhashtype seed)
232 {
233  return ::qHash(static_cast<uint>(loc), seed);
234 }
235 
238 {
251 };
252 Q_DECLARE_FLAGS(CursorPositions, CursorPosition)
253 Q_ENUM_NS(CursorPosition)
254 
255 enum FrameOption
257 {
262 };
263 Q_DECLARE_FLAGS(FrameOptions, FrameOption)
264 Q_ENUM_NS(FrameOptions)
265 
266 inline QString locationStr(Location loc)
268 {
269  switch (loc) {
271  return QStringLiteral("none");
273  return QStringLiteral("left");
275  return QStringLiteral("top");
277  return QStringLiteral("right");
279  return QStringLiteral("bottom");
280  }
281 
282  return QString();
283 }
284 }
285 
286 QT_BEGIN_NAMESPACE
289 {
290  d << o.startsHidden();
291  return d;
292 }
293 QT_END_NAMESPACE
294 
295 Q_DECLARE_OPERATORS_FOR_FLAGS(KDDockWidgets::FrameOptions)
296 Q_DECLARE_METATYPE(KDDockWidgets::InitialVisibilityOption)
297 
298 #endif
KDDockWidgets::SuggestedGeometryHint_PreserveCenter
@ SuggestedGeometryHint_PreserveCenter
Definition: KDDockWidgets.h:201
KDDockWidgets::InitialOption::InitialOption
InitialOption(InitialVisibilityOption v, QSize size)
Definition: KDDockWidgets.h:118
KDDockWidgets::FrameOption
FrameOption
Definition: KDDockWidgets.h:257
KDDockWidgets::CursorPosition_All
@ CursorPosition_All
Definition: KDDockWidgets.h:250
KDDockWidgets::InitialVisibilityOption
InitialVisibilityOption
Definition: KDDockWidgets.h:86
KDDockWidgets::FrameOption_None
@ FrameOption_None
Definition: KDDockWidgets.h:258
ItemBoxContainer
KDDockWidgets::InitialOption
Struct describing the preferred dock widget size and visibility when adding it to a layout.
Definition: KDDockWidgets.h:103
KDDockWidgets::CursorPosition_TopRight
@ CursorPosition_TopRight
Definition: KDDockWidgets.h:245
KDDockWidgets::TitleBarButtonType
TitleBarButtonType
describes a type of button you can have in the title bar
Definition: KDDockWidgets.h:219
KDDockWidgets::DefaultSizeMode::ItemSize
@ ItemSize
Simply uses the Item::size() of the item being added. Actual used size might be smaller if our window...
KDDockWidgets::InitialOption::preferredLength
int preferredLength(Qt::Orientation o) const
Definition: KDDockWidgets.h:136
KDDockWidgets::DropIndicatorType
DropIndicatorType
Definition: KDDockWidgets.h:190
KDDockWidgets::Location_OnTop
@ Location_OnTop
Left docking location
Definition: KDDockWidgets.h:48
KDDockWidgets::qHash
Qt5Qt6Compat::qhashtype qHash(SideBarLocation loc, Qt5Qt6Compat::qhashtype seed)
Definition: KDDockWidgets.h:231
KDDockWidgets::CursorPosition
CursorPosition
Definition: KDDockWidgets.h:238
KDDockWidgets::Location
Location
Definition: KDDockWidgets.h:45
KDDockWidgets::SideBarLocation::West
@ West
QSize
KDDockWidgets::InitialVisibilityOption::StartVisible
@ StartVisible
The dock widget is made visible when docked.
QDebug
KDDockWidgets::locationStr
QString locationStr(Location loc)
Definition: KDDockWidgets.h:267
KDDockWidgets::CursorPosition_Left
@ CursorPosition_Left
Definition: KDDockWidgets.h:240
KDDockWidgets::CursorPosition_Bottom
@ CursorPosition_Bottom
Definition: KDDockWidgets.h:243
KDDockWidgets::CursorPosition_Undefined
@ CursorPosition_Undefined
Definition: KDDockWidgets.h:239
KDDockWidgets::Location_OnBottom
@ Location_OnBottom
Right docking location
Definition: KDDockWidgets.h:50
KDDockWidgets::MainWindowOption_None
@ MainWindowOption_None
Definition: KDDockWidgets.h:56
KDDockWidgets::AddingOption_None
@ AddingOption_None
Definition: KDDockWidgets.h:80
KDDockWidgets::DropIndicatorType::Classic
@ Classic
The default.
KDDockWidgets::CursorPosition_Vertical
@ CursorPosition_Vertical
Definition: KDDockWidgets.h:249
KDDockWidgets::FrameOption_IsOverlayed
@ FrameOption_IsOverlayed
Definition: KDDockWidgets.h:261
KDDockWidgets::CursorPosition_TopLeft
@ CursorPosition_TopLeft
Definition: KDDockWidgets.h:244
KDDockWidgets::MainWindowOption_MDI
@ MainWindowOption_MDI
Makes the MainWindow always have a central frame, for tabbing documents
Definition: KDDockWidgets.h:58
KDDockWidgets::SideBarLocation::None
@ None
QString
KDDockWidgets::CursorPosition_Horizontal
@ CursorPosition_Horizontal
Definition: KDDockWidgets.h:248
KDDockWidgets::FrameOption_AlwaysShowsTabs
@ FrameOption_AlwaysShowsTabs
Definition: KDDockWidgets.h:259
KDDockWidgets::InitialOption::InitialOption
InitialOption(QSize size)
Definition: KDDockWidgets.h:113
Qt::Orientation
Orientation
KDDockWidgets::Location_OnLeft
@ Location_OnLeft
Definition: KDDockWidgets.h:47
KDDockWidgets::RestoreOption
RestoreOption
Definition: KDDockWidgets.h:181
KDDockWidgets::InitialOption::InitialOption
InitialOption()=default
KDDockWidgets::SuggestedGeometryHint_None
@ SuggestedGeometryHint_None
Definition: KDDockWidgets.h:200
KDDockWidgets::Location_OnRight
@ Location_OnRight
Top docking location
Definition: KDDockWidgets.h:49
KDDockWidgets::RestoreOption_None
@ RestoreOption_None
Definition: KDDockWidgets.h:182
KDDockWidgets::InitialOption::hasPreferredLength
bool hasPreferredLength(Qt::Orientation o) const
Definition: KDDockWidgets.h:142
KDDockWidgets::InitialOption::preferredSize
QSize preferredSize
Allows to control the size a dock widget should get when docked.
Definition: KDDockWidgets.h:164
KDDockWidgets::SideBarLocation
SideBarLocation
Each main window supports 4 sidebars.
Definition: KDDockWidgets.h:209
KDDockWidgets::DefaultSizeMode
DefaultSizeMode
Definition: KDDockWidgets.h:68
KDDockWidgets::SideBarLocation::East
@ East
KDDockWidgets::SideBarLocation::South
@ South
KDDockWidgets::TitleBarButtonType::Close
@ Close
KDDockWidgets::SideBarLocation::North
@ North
KDDockWidgets::SuggestedGeometryHint
SuggestedGeometryHint
Definition: KDDockWidgets.h:199
KDDockWidgets::InitialOption::startsHidden
bool startsHidden() const
Definition: KDDockWidgets.h:131
KDDockWidgets::InitialOption::InitialOption
InitialOption(InitialVisibilityOption v)
Definition: KDDockWidgets.h:108
KDDockWidgets::CursorPosition_Right
@ CursorPosition_Right
Definition: KDDockWidgets.h:241
KDDockWidgets::AddingOption_StartHidden
@ AddingOption_StartHidden
Definition: KDDockWidgets.h:81
KDDockWidgets::RestoreOption_RelativeToMainWindow
@ RestoreOption_RelativeToMainWindow
Loading layouts won't change the main window geometry and just use whatever the user has at the momen...
Definition: KDDockWidgets.h:183
KDDockWidgets
Definition: Config.cpp:36
KDDockWidgets::CursorPosition_BottomRight
@ CursorPosition_BottomRight
Definition: KDDockWidgets.h:246
KDDockWidgets::Location_None
@ Location_None
Definition: KDDockWidgets.h:46
KDDockWidgets::FrameOption_IsCentralFrame
@ FrameOption_IsCentralFrame
Definition: KDDockWidgets.h:260
KDDockWidgets::AddingOption
AddingOption
Only here for source-compat with v1.2. Do not use. Use InitialVisibilityOption instead.
Definition: KDDockWidgets.h:79
KDDockWidgets::MainWindowOption
MainWindowOption
Definition: KDDockWidgets.h:55
KDDockWidgets::TitleBarButtonType::Normal
@ Normal
Layouting
Definition: FrameworkWidgetFactory.h:32
operator<<
QT_BEGIN_NAMESPACE QDebug operator<<(QDebug d, KDDockWidgets::InitialOption o)
Definition: KDDockWidgets.h:288
KDDockWidgets::SuggestedGeometryHint_GeometryIsFromDocked
@ SuggestedGeometryHint_GeometryIsFromDocked
Definition: KDDockWidgets.h:202
KDDockWidgets::CursorPosition_BottomLeft
@ CursorPosition_BottomLeft
Definition: KDDockWidgets.h:247
KDDockWidgets::MainWindowOption_HasCentralFrame
@ MainWindowOption_HasCentralFrame
No option set
Definition: KDDockWidgets.h:57
KDDockWidgets::CursorPosition_Top
@ CursorPosition_Top
Definition: KDDockWidgets.h:242
KDDockWidgets::TitleBarButtonType::Float
@ Float

© 2019-2021 Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
KDDockWidgets
Advanced Dock Widget Framework for Qt
https://www.kdab.com/development-resources/qt-tools/kddockwidgets/
Generated on Mon Nov 15 2021 00:17:26 for KDDockWidgets API Documentation by doxygen 1.8.20