KDDockWidgets API Documentation  1.6
KDDockWidgets.h
Go to the documentation of this file.
1 /*
2  This file is part of KDDockWidgets.
3 
4  SPDX-FileCopyrightText: 2019-2022 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 
44 enum Location {
50 };
51 Q_ENUM_NS(Location)
52 
58 };
60 Q_DECLARE_FLAGS(MainWindowOptions, MainWindowOption)
61 Q_ENUM_NS(MainWindowOptions)
62 
63 enum class DefaultSizeMode {
68  ItemSize,
69  Fair,
70  FairButFloor,
72 };
73 Q_ENUM_NS(DefaultSizeMode)
74 
75 enum AddingOption {
80 };
81 Q_ENUM_NS(AddingOption)
82 
84  StartVisible = 0,
85  StartHidden,
87 };
88 Q_ENUM_NS(InitialVisibilityOption)
89 
90 
101 {
102  // Implicit ctors for convenience:
103 
104  InitialOption() = default;
105 
107  : visibility(v)
108  {
109  }
110 
112  : preferredSize(size)
113  {
114  }
115 
117  : visibility(v)
118  , preferredSize(size)
119  {
120  }
121 
122  QT_DEPRECATED_X("AddingOption is deprecated and will be removed in v1.5. Use InitialVisibilityOption instead.")
124  : visibility(opt == AddingOption_StartHidden ? InitialVisibilityOption::StartHidden
125  : InitialVisibilityOption::StartVisible)
126  {
127  }
128 
129  bool startsHidden() const
130  {
131  return visibility == InitialVisibilityOption::StartHidden;
132  }
133 
134  bool preservesCurrentTab() const
135  {
136  return visibility == InitialVisibilityOption::PreserveCurrentTab;
137  }
138 
140  {
141  return o == Qt::Horizontal ? preferredSize.width()
142  : preferredSize.height();
143  }
144 
146  {
147  return preferredLength(o) > 0;
148  }
149 
156  InitialVisibilityOption visibility = InitialVisibilityOption::StartVisible;
157 
168 
169 private:
170  friend class Layouting::Item;
171  friend class Layouting::ItemBoxContainer;
172  friend class KDDockWidgets::MultiSplitter;
173  friend class KDDockWidgets::DropArea;
174 
176  : sizeMode(mode)
177  {
178  }
179 
180  DefaultSizeMode sizeMode = DefaultSizeMode::Fair;
181 };
182 
186 };
188 Q_DECLARE_FLAGS(RestoreOptions, RestoreOption)
189 Q_ENUM_NS(RestoreOptions)
190 
191 enum class DropIndicatorType {
192  Classic,
193  Segmented,
194  None
195 };
196 Q_ENUM_NS(DropIndicatorType)
197 
203 };
204 Q_DECLARE_FLAGS(SuggestedGeometryHints, SuggestedGeometryHint)
205 Q_ENUM_NS(SuggestedGeometryHint)
206 
207 enum class SideBarLocation {
209  None,
210  North,
211  East,
212  West,
213  South
214 };
215 
217 enum class TitleBarButtonType {
218  Close,
219  Float,
220  Minimize,
221  Maximize,
222  Normal, // Restore from maximized state
223  AutoHide,
224  UnautoHide
225 };
226 Q_ENUM_NS(TitleBarButtonType)
227 
228 enum DropLocation {
244 };
245 Q_ENUM_NS(DropLocation)
246 
247 inline Qt5Qt6Compat::qhashtype qHash(SideBarLocation loc, Qt5Qt6Compat::qhashtype seed)
249 {
250  return ::qHash(static_cast<uint>(loc), seed);
251 }
252 
267 };
268 Q_DECLARE_FLAGS(CursorPositions, CursorPosition)
269 Q_ENUM_NS(CursorPosition)
270 
271 
272 enum FrameOption {
279 };
280 Q_DECLARE_FLAGS(FrameOptions, FrameOption)
281 Q_ENUM_NS(FrameOptions)
282 
283 enum TabWidgetOption {
287 };
288 Q_DECLARE_FLAGS(TabWidgetOptions, TabWidgetOption)
289 Q_ENUM_NS(TabWidgetOptions)
290 
291 inline QString locationStr(Location loc)
293 {
294  switch (loc) {
296  return QStringLiteral("none");
298  return QStringLiteral("left");
300  return QStringLiteral("top");
302  return QStringLiteral("right");
304  return QStringLiteral("bottom");
305  }
306 
307  return QString();
308 }
309 }
310 
311 QT_BEGIN_NAMESPACE
314 {
315  d << o.startsHidden();
316  return d;
317 }
318 QT_END_NAMESPACE
319 
320 Q_DECLARE_OPERATORS_FOR_FLAGS(KDDockWidgets::FrameOptions)
321 Q_DECLARE_METATYPE(KDDockWidgets::InitialVisibilityOption)
322 
323 #endif
KDDockWidgets::SuggestedGeometryHint_PreserveCenter
@ SuggestedGeometryHint_PreserveCenter
Definition: KDDockWidgets.h:201
KDDockWidgets::TabWidgetOption_None
@ TabWidgetOption_None
Definition: KDDockWidgets.h:285
KDDockWidgets::InitialOption::InitialOption
InitialOption(InitialVisibilityOption v, QSize size)
Definition: KDDockWidgets.h:116
KDDockWidgets::TabWidgetOption
TabWidgetOption
Definition: KDDockWidgets.h:284
KDDockWidgets::FrameOption
FrameOption
Definition: KDDockWidgets.h:273
KDDockWidgets::CursorPosition_All
@ CursorPosition_All
Definition: KDDockWidgets.h:266
KDDockWidgets::DropLocation_Top
@ DropLocation_Top
Definition: KDDockWidgets.h:232
KDDockWidgets::InitialVisibilityOption
InitialVisibilityOption
Definition: KDDockWidgets.h:83
KDDockWidgets::FrameOption_None
@ FrameOption_None
Definition: KDDockWidgets.h:274
KDDockWidgets::DropLocation_Vertical
@ DropLocation_Vertical
Definition: KDDockWidgets.h:243
ItemBoxContainer
KDDockWidgets::InitialOption
Struct describing the preferred dock widget size and visibility when adding it to a layout.
Definition: KDDockWidgets.h:101
KDDockWidgets::CursorPosition_TopRight
@ CursorPosition_TopRight
Definition: KDDockWidgets.h:261
KDDockWidgets::DropLocation_Center
@ DropLocation_Center
Definition: KDDockWidgets.h:235
KDDockWidgets::TitleBarButtonType
TitleBarButtonType
describes a type of button you can have in the title bar
Definition: KDDockWidgets.h:217
KDDockWidgets::DefaultSizeMode::ItemSize
@ ItemSize
Simply uses the Item::size() of the item being added. Actual used size might be smaller if our window...
KDDockWidgets::DropLocation_Inner
@ DropLocation_Inner
Definition: KDDockWidgets.h:240
KDDockWidgets::InitialOption::preferredLength
int preferredLength(Qt::Orientation o) const
Definition: KDDockWidgets.h:139
KDDockWidgets::DropIndicatorType
DropIndicatorType
Definition: KDDockWidgets.h:191
KDDockWidgets::Location_OnTop
@ Location_OnTop
Left docking location
Definition: KDDockWidgets.h:47
KDDockWidgets::qHash
Qt5Qt6Compat::qhashtype qHash(SideBarLocation loc, Qt5Qt6Compat::qhashtype seed)
Definition: KDDockWidgets.h:248
KDDockWidgets::CursorPosition
CursorPosition
Definition: KDDockWidgets.h:254
KDDockWidgets::Location
Location
Definition: KDDockWidgets.h:44
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:292
KDDockWidgets::CursorPosition_Left
@ CursorPosition_Left
Definition: KDDockWidgets.h:256
KDDockWidgets::CursorPosition_Bottom
@ CursorPosition_Bottom
Definition: KDDockWidgets.h:259
KDDockWidgets::CursorPosition_Undefined
@ CursorPosition_Undefined
Definition: KDDockWidgets.h:255
KDDockWidgets::DropLocation_Right
@ DropLocation_Right
Definition: KDDockWidgets.h:233
KDDockWidgets::Location_OnBottom
@ Location_OnBottom
Right docking location
Definition: KDDockWidgets.h:49
KDDockWidgets::DropLocation_Bottom
@ DropLocation_Bottom
Definition: KDDockWidgets.h:234
KDDockWidgets::MainWindowOption_None
@ MainWindowOption_None
Definition: KDDockWidgets.h:54
KDDockWidgets::InitialOption::preservesCurrentTab
bool preservesCurrentTab() const
Definition: KDDockWidgets.h:134
KDDockWidgets::AddingOption_None
@ AddingOption_None
Definition: KDDockWidgets.h:78
KDDockWidgets::DropIndicatorType::Classic
@ Classic
The default.
KDDockWidgets::CursorPosition_Vertical
@ CursorPosition_Vertical
Definition: KDDockWidgets.h:265
KDDockWidgets::FrameOption_IsOverlayed
@ FrameOption_IsOverlayed
Definition: KDDockWidgets.h:277
KDDockWidgets::CursorPosition_TopLeft
@ CursorPosition_TopLeft
Definition: KDDockWidgets.h:260
KDDockWidgets::MainWindowOption_MDI
@ MainWindowOption_MDI
Makes the MainWindow always have a central frame, for tabbing documents
Definition: KDDockWidgets.h:56
KDDockWidgets::SideBarLocation::None
@ None
KDDockWidgets::MainWindowOption_HasCentralWidget
@ MainWindowOption_HasCentralWidget
The layout will be MDI. DockWidgets can have arbitrary positions, not restricted by any layout
Definition: KDDockWidgets.h:57
QString
KDDockWidgets::CursorPosition_Horizontal
@ CursorPosition_Horizontal
Definition: KDDockWidgets.h:264
KDDockWidgets::FrameOption_AlwaysShowsTabs
@ FrameOption_AlwaysShowsTabs
Definition: KDDockWidgets.h:275
KDDockWidgets::InitialOption::InitialOption
InitialOption(QSize size)
Definition: KDDockWidgets.h:111
Qt::Orientation
Orientation
KDDockWidgets::Location_OnLeft
@ Location_OnLeft
Definition: KDDockWidgets.h:46
KDDockWidgets::RestoreOption
RestoreOption
Definition: KDDockWidgets.h:183
KDDockWidgets::InitialOption::InitialOption
InitialOption()=default
KDDockWidgets::FrameOption_NonDockable
@ FrameOption_NonDockable
Definition: KDDockWidgets.h:278
KDDockWidgets::DropLocation_OutterTop
@ DropLocation_OutterTop
Definition: KDDockWidgets.h:237
KDDockWidgets::SuggestedGeometryHint_None
@ SuggestedGeometryHint_None
Definition: KDDockWidgets.h:200
KDDockWidgets::Location_OnRight
@ Location_OnRight
Top docking location
Definition: KDDockWidgets.h:48
KDDockWidgets::RestoreOption_None
@ RestoreOption_None
Definition: KDDockWidgets.h:184
KDDockWidgets::InitialOption::hasPreferredLength
bool hasPreferredLength(Qt::Orientation o) const
Definition: KDDockWidgets.h:145
KDDockWidgets::InitialOption::preferredSize
QSize preferredSize
Allows to control the size a dock widget should get when docked.
Definition: KDDockWidgets.h:167
KDDockWidgets::SideBarLocation
SideBarLocation
Each main window supports 4 sidebars.
Definition: KDDockWidgets.h:208
KDDockWidgets::DefaultSizeMode
DefaultSizeMode
Definition: KDDockWidgets.h:67
KDDockWidgets::SideBarLocation::East
@ East
KDDockWidgets::SideBarLocation::South
@ South
KDDockWidgets::TitleBarButtonType::Close
@ Close
KDDockWidgets::DropLocation_Left
@ DropLocation_Left
Definition: KDDockWidgets.h:231
KDDockWidgets::SideBarLocation::North
@ North
KDDockWidgets::SuggestedGeometryHint
SuggestedGeometryHint
Definition: KDDockWidgets.h:199
KDDockWidgets::InitialOption::startsHidden
bool startsHidden() const
Definition: KDDockWidgets.h:129
KDDockWidgets::InitialOption::InitialOption
InitialOption(InitialVisibilityOption v)
Definition: KDDockWidgets.h:106
KDDockWidgets::CursorPosition_Right
@ CursorPosition_Right
Definition: KDDockWidgets.h:257
KDDockWidgets::AddingOption_StartHidden
@ AddingOption_StartHidden
Definition: KDDockWidgets.h:79
KDDockWidgets::RestoreOption_RelativeToMainWindow
@ RestoreOption_RelativeToMainWindow
Definition: KDDockWidgets.h:185
KDDockWidgets::DropLocation_OutterLeft
@ DropLocation_OutterLeft
Definition: KDDockWidgets.h:236
KDDockWidgets
Definition: Config.cpp:37
KDDockWidgets::DropLocation_OutterRight
@ DropLocation_OutterRight
Definition: KDDockWidgets.h:238
KDDockWidgets::CursorPosition_BottomRight
@ CursorPosition_BottomRight
Definition: KDDockWidgets.h:262
KDDockWidgets::Location_None
@ Location_None
Definition: KDDockWidgets.h:45
KDDockWidgets::FrameOption_IsCentralFrame
@ FrameOption_IsCentralFrame
Definition: KDDockWidgets.h:276
KDDockWidgets::DropLocation_Horizontal
@ DropLocation_Horizontal
Definition: KDDockWidgets.h:242
KDDockWidgets::DropLocation
DropLocation
Enum describing the different drop indicator types.
Definition: KDDockWidgets.h:229
KDDockWidgets::AddingOption
AddingOption
Only here for source-compat with v1.2. Do not use. Use InitialVisibilityOption instead.
Definition: KDDockWidgets.h:77
KDDockWidgets::DropLocation_None
@ DropLocation_None
Definition: KDDockWidgets.h:230
KDDockWidgets::MainWindowOption
MainWindowOption
Definition: KDDockWidgets.h:53
KDDockWidgets::TitleBarButtonType::Normal
@ Normal
Layouting
Definition: FrameworkWidgetFactory.h:32
operator<<
QT_BEGIN_NAMESPACE QDebug operator<<(QDebug d, KDDockWidgets::InitialOption o)
Definition: KDDockWidgets.h:313
KDDockWidgets::SuggestedGeometryHint_GeometryIsFromDocked
@ SuggestedGeometryHint_GeometryIsFromDocked
Definition: KDDockWidgets.h:202
KDDockWidgets::TabWidgetOption_DocumentMode
@ TabWidgetOption_DocumentMode
Definition: KDDockWidgets.h:286
KDDockWidgets::CursorPosition_BottomLeft
@ CursorPosition_BottomLeft
Definition: KDDockWidgets.h:263
KDDockWidgets::MainWindowOption_HasCentralFrame
@ MainWindowOption_HasCentralFrame
No option set
Definition: KDDockWidgets.h:55
KDDockWidgets::CursorPosition_Top
@ CursorPosition_Top
Definition: KDDockWidgets.h:258
KDDockWidgets::DropLocation_Outter
@ DropLocation_Outter
Definition: KDDockWidgets.h:241
KDDockWidgets::TitleBarButtonType::Float
@ Float
KDDockWidgets::DropLocation_OutterBottom
@ DropLocation_OutterBottom
Definition: KDDockWidgets.h:239

© 2019-2022 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 Thu Sep 15 2022 00:16:28 for KDDockWidgets API Documentation by doxygen 1.8.20