KDDockWidgets API Documentation  1.4
MainWindowBase.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 
12 
20 #ifndef KD_MAINWINDOW_BASE_H
21 #define KD_MAINWINDOW_BASE_H
22 
23 #include "docks_export.h"
24 #include "KDDockWidgets.h"
25 #include "QWidgetAdapter.h"
26 #include "LayoutSaver.h"
27 
28 #include <QVector>
29 #include <QMargins>
30 
31 class TestDocks;
32 
33 namespace KDDockWidgets {
34 
35 class DockWidgetBase;
36 class Frame;
37 class DropArea;
38 class MDILayoutWidget;
39 class MultiSplitter;
40 class LayoutWidget;
41 class DropAreaWithCentralFrame;
42 class SideBar;
43 
51 #ifndef PYTHON_BINDINGS //Pyside bug: https://bugreports.qt.io/projects/PYSIDE/issues/PYSIDE-1327
52 class DOCKS_EXPORT MainWindowBase : public QMainWindowOrQuick
53 #else
54 class DOCKS_EXPORT MainWindowBase : public QMainWindow
55 #endif
56 {
57  Q_OBJECT
58  Q_PROPERTY(QStringList affinities READ affinities CONSTANT)
59  Q_PROPERTY(QString uniqueName READ uniqueName CONSTANT)
60  Q_PROPERTY(KDDockWidgets::MainWindowOptions options READ options CONSTANT)
61  Q_PROPERTY(bool isMDI READ isMDI CONSTANT)
62 public:
64  explicit MainWindowBase(const QString &uniqueName, MainWindowOptions options = MainWindowOption_HasCentralFrame,
65  WidgetType *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());
66 
67  ~MainWindowBase() override;
68 
76  Q_INVOKABLE void addDockWidgetAsTab(KDDockWidgets::DockWidgetBase *dockwidget);
77 
87  Q_INVOKABLE void addDockWidget(KDDockWidgets::DockWidgetBase *dockWidget,
88  KDDockWidgets::Location location,
89  KDDockWidgets::DockWidgetBase *relativeTo = nullptr,
90  KDDockWidgets::InitialOption initialOption = {});
91 
97  QString uniqueName() const;
98 
99 
101  MainWindowOptions options() const;
102 
105  DropAreaWithCentralFrame *dropArea() const;
106 
109  MultiSplitter *multiSplitter() const;
110 
113  LayoutWidget *layoutWidget() const;
114 
117  MDILayoutWidget *mdiLayoutWidget() const;
118 
135  void setAffinities(const QStringList &names);
136 
140  QStringList affinities() const;
141 
148  Q_INVOKABLE void layoutEqually();
149 
153  Q_INVOKABLE void layoutParentContainerEqually(KDDockWidgets::DockWidgetBase *dockWidget);
154 
161  Q_INVOKABLE void moveToSideBar(KDDockWidgets::DockWidgetBase *);
162 
164  Q_INVOKABLE void moveToSideBar(KDDockWidgets::DockWidgetBase *, KDDockWidgets::SideBarLocation);
165 
167  Q_INVOKABLE void restoreFromSideBar(KDDockWidgets::DockWidgetBase *);
168 
170  Q_INVOKABLE void overlayOnSideBar(KDDockWidgets::DockWidgetBase *);
171 
173  Q_INVOKABLE void toggleOverlayOnSideBar(KDDockWidgets::DockWidgetBase *);
174 
176  Q_INVOKABLE void clearSideBarOverlay(bool deleteFrame = true);
177 
179  Q_INVOKABLE KDDockWidgets::SideBar *
180  sideBarForDockWidget(const KDDockWidgets::DockWidgetBase *) const;
181 
183  Q_INVOKABLE bool sideBarIsVisible(KDDockWidgets::SideBarLocation) const;
184 
187  DockWidgetBase *overlayedDockWidget() const;
188 
190  bool anySideBarIsVisible() const;
191 
194  bool isMDI() const;
195 
201  Q_INVOKABLE bool closeDockWidgets(bool force = false);
202 
208  QRect windowGeometry() const;
209 
210 protected:
211  void setUniqueName(const QString &uniqueName);
212  void onResized(QResizeEvent *); // Because QtQuick doesn't have resizeEvent()
213  virtual QMargins centerWidgetMargins() const = 0;
214  virtual SideBar *sideBar(SideBarLocation) const = 0;
215  virtual QRect centralAreaGeometry() const
216  {
217  return {};
218  }
219 
220 Q_SIGNALS:
222 
226  void frameCountChanged(int);
227 
229  void centralWidgetResized(QSize oldSize, QSize newSize);
230 
231 private:
232  class Private;
233  Private *const d;
234 
235  friend class ::TestDocks;
236  friend class LayoutSaver;
237  bool deserialize(const LayoutSaver::MainWindow &);
238  LayoutSaver::MainWindow serialize() const;
239 };
240 }
241 
242 #endif
QMainWindow
LayoutSaver.h
Class to save and restore dockwidget layouts.
KDDockWidgets::MainWindowBase::frameCountChanged
void frameCountChanged(int)
emitted when the number of docked frames changes Note that we're using the "Frame" nomenculature inst...
KDDockWidgets::MainWindowBase::centerWidgetMargins
virtual QMargins centerWidgetMargins() const =0
QRect
KDDockWidgets.h
File with KDDockWidgets namespace-level enums and methods.
KDDockWidgets::InitialOption
Struct describing the preferred dock widget size and visibility when adding it to a layout.
Definition: KDDockWidgets.h:103
QWidget
KDDockWidgets::Location
Location
Definition: KDDockWidgets.h:45
QSize
KDDockWidgets::MainWindowBase::centralAreaGeometry
virtual QRect centralAreaGeometry() const
Definition: MainWindowBase.h:215
QWidgetAdapter.h
Abstraction for supporting both QtWidgets and QtQuick.
KDDockWidgets::MainWindowBase::sideBar
virtual SideBar * sideBar(SideBarLocation) const =0
Qt::WindowFlags
typedef WindowFlags
KDDockWidgets::LayoutSaver
LayoutSaver allows to save or restore layouts.
Definition: LayoutSaver.h:55
QString
KDDockWidgets::MainWindowBase::uniqueNameChanged
void uniqueNameChanged()
KDDockWidgets::MainWindowBase::List
QVector< MainWindowBase * > List
Definition: MainWindowBase.h:63
QMargins
KDDockWidgets::SideBarLocation
SideBarLocation
Each main window supports 4 sidebars.
Definition: KDDockWidgets.h:209
KDDockWidgets::MainWindowBase::centralWidgetResized
void centralWidgetResized(QSize oldSize, QSize newSize)
emitted when the MainWindow::centralWidget() changes size
QResizeEvent
KDDockWidgets::DockWidgetBase
The DockWidget base-class. DockWidget and DockWidgetBase are only split in two so we can share some c...
Definition: DockWidgetBase.h:61
KDDockWidgets
Definition: Config.cpp:36
KDDockWidgets::MainWindowBase
The MainWindow base-class. MainWindow and MainWindowBase are only split in two so we can share some c...
Definition: MainWindowBase.h:56
QVector
QStringList
KDDockWidgets::MainWindowOption_HasCentralFrame
@ MainWindowOption_HasCentralFrame
No option set
Definition: KDDockWidgets.h:57

© 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:28 for KDDockWidgets API Documentation by doxygen 1.8.20