KDDockWidgets API Documentation 2.0
Loading...
Searching...
No Matches
qtwidgets/TestHelpers.cpp
Go to the documentation of this file.
1/*
2 This file is part of KDDockWidgets.
3
4 SPDX-FileCopyrightText: 2020 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#include "kddockwidgets/KDDockWidgets.h"
13#include "Platform.h"
14#include "views/ViewWrapper_p.h"
15#include "views/View.h"
16#include "kddockwidgets/core/MainWindow.h"
18#include "Window_p.h"
19
20#include <QStyleFactory>
21#include <QApplication>
22#include <QLineEdit>
23#include <QWidget>
24
25using namespace KDDockWidgets;
26using namespace KDDockWidgets::QtWidgets;
27
28#ifdef DOCKS_TESTING_METHODS
29
31class TestView : public QtWidgets::View<QWidget>
32{
33 Q_OBJECT
34public:
35 explicit TestView(Core::CreateViewOptions opts, QWidget *parent)
36 : QtWidgets::View<QWidget>(nullptr, Core::ViewType::None, parent)
37 , m_opts(opts)
38 {
39 create();
40 setMinimumSize(opts.minSize.boundedTo(opts.maxSize));
41 }
42
43 QSize sizeHint() const override
44 {
45 return m_opts.sizeHint;
46 }
47
48 QSize maxSizeHint() const override
49 {
50 return m_opts.maxSize.boundedTo(QtWidgets::View<QWidget>::maximumSize());
51 }
52
53private:
54 Core::CreateViewOptions m_opts;
55};
56
57class FocusableTestView : public QtWidgets::View<QLineEdit>
58{
59 Q_OBJECT
60public:
61 explicit FocusableTestView(Core::CreateViewOptions opts, QWidget *parent)
62 : QtWidgets::View<QLineEdit>(nullptr, Core::ViewType::None, parent)
63 , m_opts(opts)
64 {
65 create();
66 setMinimumSize(opts.minSize.boundedTo(opts.maxSize));
68 }
69
70 QSize sizeHint() const override
71 {
72 return m_opts.sizeHint;
73 }
74
75 QSize maxSizeHint() const override
76 {
78 }
79
80private:
81 Core::CreateViewOptions m_opts;
82};
83
84class NonClosableTestView : public QtWidgets::View<QWidget>
85{
86 Q_OBJECT
87public:
88 explicit NonClosableTestView(QWidget *parent)
89 : QtWidgets::View<QWidget>(nullptr, Core::ViewType::None, parent)
90 {
91 create();
92 }
93
94 void closeEvent(QCloseEvent *ev) override
95 {
96 ev->ignore(); // don't allow to close
97 }
98};
99
100}
101
102void Platform::tests_initPlatform_impl()
103{
104 Platform_qt::tests_initPlatform_impl();
105}
106
107void Platform::tests_deinitPlatform_impl()
108{
109 tests_wait(500); // Some windows are currently being destroyed
110
111 qDeleteAll(qApp->topLevelWidgets());
112
113 Platform_qt::tests_deinitPlatform_impl();
114}
115
116Core::View *Platform::tests_createView(Core::CreateViewOptions opts, Core::View *parent)
117{
118 QWidget *parentWidget = QtCommon::View_qt::asQWidget(parent);
119
120 auto newWidget = new TestView(opts, parentWidget);
121 if (opts.isVisible)
122 newWidget->show();
123
124 return newWidget;
125}
126
127Core::View *Platform::tests_createFocusableView(Core::CreateViewOptions opts, Core::View *parent)
128{
129 QWidget *parentWidget = QtCommon::View_qt::asQWidget(parent);
130
131 auto newWidget = new FocusableTestView(opts, parentWidget);
132 if (opts.isVisible)
133 newWidget->show();
134
135 return newWidget;
136}
137
138Core::View *Platform::tests_createNonClosableView(Core::View *parent)
139{
140 QWidget *parentWidget = QtCommon::View_qt::asQWidget(parent);
141 auto newWidget = new NonClosableTestView(parentWidget);
142
143 return newWidget;
144}
145
146Core::MainWindow *Platform::createMainWindow(const QString &uniqueName,
147 Core::CreateViewOptions opts,
148 MainWindowOptions options,
149 Core::View *parent,
150 Qt::WindowFlags flags) const
151{
152 auto view = new QtWidgets::MainWindow(
153 uniqueName, options,
154 parent ? static_cast<QtWidgets::View<QMainWindow> *>(parent) : nullptr, flags);
155
156 if (opts.isVisible)
157 view->show();
158 view->resize(opts.size);
159
160 return view->mainWindow();
161}
162
163std::shared_ptr<Core::Window> Platform::tests_createWindow()
164{
165 auto window = new Window(new QWidget());
166 window->setVisible(true);
167 return std::shared_ptr<Core::Window>(window);
168}
169
170#endif
171
172#include "TestHelpers.moc"
The MainWindow base-class. MainWindow and MainWindowBase are only split in two so we can share some c...
The QMainwindow sub-class that the application should use to be able to dock KDDockWidget DockWidget ...
ViewType
Each View type also has a specific Controller associated with, except for ViewType::None.
Definition Controller.h:26
Class to abstract QAction, so code still works with QtQuick and Flutter.
@ None
Just use the defaults.
void ignore()
QSize boundedTo(const QSize &otherSize) const const
typedef WindowFlags
QMainWindow sub-class to enable KDDockWidgets support.

© 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 by doxygen 1.9.8