Skip to content

Commit 3ff6918

Browse files
Added configflags example to test use of CDockManager config flags
1 parent ac3af4c commit 3ff6918

File tree

7 files changed

+213
-1
lines changed

7 files changed

+213
-1
lines changed

examples/configflags/CMakeLists.txt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
cmake_minimum_required(VERSION 3.5)
2+
project(ads_example_centralwidget VERSION ${VERSION_SHORT})
3+
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
4+
find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets REQUIRED)
5+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
6+
add_executable(configFlagsExample WIN32
7+
main.cpp
8+
mainwindow.cpp
9+
mainwindow.ui
10+
)
11+
target_include_directories(CentralWidgetExample PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../../src")
12+
target_link_libraries(CentralWidgetExample PRIVATE qt${QT_VERSION_MAJOR}advanceddocking)
13+
target_link_libraries(CentralWidgetExample PUBLIC Qt${QT_VERSION_MAJOR}::Core
14+
Qt${QT_VERSION_MAJOR}::Gui
15+
Qt${QT_VERSION_MAJOR}::Widgets)
16+
set_target_properties(CentralWidgetExample PROPERTIES
17+
AUTOMOC ON
18+
AUTORCC ON
19+
AUTOUIC ON
20+
CXX_STANDARD 14
21+
CXX_STANDARD_REQUIRED ON
22+
CXX_EXTENSIONS OFF
23+
VERSION ${VERSION_SHORT}
24+
EXPORT_NAME "Qt Advanced Docking System Central Widget Example"
25+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib"
26+
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib"
27+
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/bin"
28+
)

examples/configflags/configflags.pro

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
ADS_OUT_ROOT = $${OUT_PWD}/../..
2+
3+
QT += core gui widgets
4+
5+
TARGET = ConfigFlagsExample
6+
DESTDIR = $${ADS_OUT_ROOT}/lib
7+
TEMPLATE = app
8+
CONFIG += c++14
9+
CONFIG += debug_and_release
10+
adsBuildStatic {
11+
DEFINES += ADS_STATIC
12+
}
13+
14+
# The following define makes your compiler emit warnings if you use
15+
# any Qt feature that has been marked deprecated (the exact warnings
16+
# depend on your compiler). Please consult the documentation of the
17+
# deprecated API in order to know how to port your code away from it.
18+
DEFINES += QT_DEPRECATED_WARNINGS
19+
20+
SOURCES += \
21+
main.cpp \
22+
mainwindow.cpp
23+
24+
HEADERS += \
25+
mainwindow.h
26+
27+
FORMS += \
28+
mainwindow.ui
29+
30+
LIBS += -L$${ADS_OUT_ROOT}/lib
31+
include(../../ads.pri)
32+
INCLUDEPATH += ../../src
33+
DEPENDPATH += ../../src
34+

examples/configflags/main.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#include <mainwindow.h>
2+
#include <QApplication>
3+
4+
int main(int argc, char *argv[])
5+
{
6+
QApplication a(argc, argv);
7+
CMainWindow w;
8+
w.show();
9+
return a.exec();
10+
}

examples/configflags/mainwindow.cpp

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#include "mainwindow.h"
2+
3+
#include "ui_mainwindow.h"
4+
5+
#include <QLabel>
6+
#include <QToolBar>
7+
8+
#include "DockAreaWidget.h"
9+
#include "DockAreaTitleBar.h"
10+
11+
12+
using namespace ads;
13+
14+
15+
CMainWindow::CMainWindow(QWidget *parent) :
16+
QMainWindow(parent),
17+
ui(new Ui::CMainWindow)
18+
{
19+
ui->setupUi(this);
20+
21+
// Add the toolbar
22+
auto toolbar_ = addToolBar("Top Toolbar");
23+
24+
// Create the dock manager
25+
ads::CDockManager::setConfigFlags(ads::CDockManager::DefaultOpaqueConfig);
26+
ads::CDockManager::setConfigFlag(ads::CDockManager::DockAreaHasCloseButton,
27+
false);
28+
ads::CDockManager::setConfigFlag(ads::CDockManager::DockAreaHasUndockButton,
29+
false);
30+
ads::CDockManager::setConfigFlag(
31+
ads::CDockManager::DockAreaHasTabsMenuButton, false);
32+
auto DockManager = new ads::CDockManager(this);
33+
34+
// Create a dockable widget
35+
QLabel *l1 = new QLabel();
36+
l1->setWordWrap(true);
37+
l1->setAlignment(Qt::AlignTop | Qt::AlignLeft);
38+
l1->setText("Docking widget 1");
39+
ads::CDockWidget *dockWidget1 = new ads::CDockWidget("Dock 1");
40+
dockWidget1->setWidget(l1);
41+
DockManager->addDockWidget(ads::LeftDockWidgetArea, dockWidget1);
42+
43+
QLabel *l2 = new QLabel();
44+
l2->setWordWrap(true);
45+
l2->setAlignment(Qt::AlignTop | Qt::AlignLeft);
46+
l2->setText("Docking widget 2");
47+
ads::CDockWidget *dockWidget2 = new ads::CDockWidget("Dock 2");
48+
dockWidget2->setWidget(l2);
49+
DockManager->addDockWidget(ads::RightDockWidgetArea, dockWidget2);
50+
51+
// Add menu actions
52+
ui->menuView->addAction(dockWidget1->toggleViewAction());
53+
ui->menuView->addAction(dockWidget2->toggleViewAction());
54+
toolbar_->addAction(dockWidget1->toggleViewAction());
55+
toolbar_->addAction(dockWidget2->toggleViewAction());
56+
}
57+
58+
59+
CMainWindow::~CMainWindow()
60+
{
61+
delete ui;
62+
}
63+
64+
65+

examples/configflags/mainwindow.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#ifndef MAINWINDOW_H
2+
#define MAINWINDOW_H
3+
4+
#include <QMainWindow>
5+
#include <QComboBox>
6+
#include <QWidgetAction>
7+
8+
#include "DockManager.h"
9+
#include "DockAreaWidget.h"
10+
#include "DockWidget.h"
11+
12+
QT_BEGIN_NAMESPACE
13+
namespace Ui { class CMainWindow; }
14+
QT_END_NAMESPACE
15+
16+
class CMainWindow : public QMainWindow
17+
{
18+
Q_OBJECT
19+
20+
public:
21+
CMainWindow(QWidget *parent = nullptr);
22+
~CMainWindow();
23+
24+
private:
25+
Ui::CMainWindow *ui;
26+
};
27+
#endif // MAINWINDOW_H

examples/configflags/mainwindow.ui

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>CMainWindow</class>
4+
<widget class="QMainWindow" name="CMainWindow">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>1284</width>
10+
<height>757</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>MainWindow</string>
15+
</property>
16+
<widget class="QWidget" name="centralwidget"/>
17+
<widget class="QMenuBar" name="menubar">
18+
<property name="geometry">
19+
<rect>
20+
<x>0</x>
21+
<y>0</y>
22+
<width>1284</width>
23+
<height>21</height>
24+
</rect>
25+
</property>
26+
<widget class="QMenu" name="menuView">
27+
<property name="title">
28+
<string>View</string>
29+
</property>
30+
</widget>
31+
<addaction name="menuView"/>
32+
</widget>
33+
<widget class="QToolBar" name="toolBar">
34+
<property name="windowTitle">
35+
<string>toolBar</string>
36+
</property>
37+
<attribute name="toolBarArea">
38+
<enum>TopToolBarArea</enum>
39+
</attribute>
40+
<attribute name="toolBarBreak">
41+
<bool>false</bool>
42+
</attribute>
43+
</widget>
44+
</widget>
45+
<resources/>
46+
<connections/>
47+
</ui>

examples/examples.pro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ SUBDIRS = \
88
sidebar \
99
deleteonclose \
1010
emptydockarea \
11-
dockindock
11+
dockindock \
12+
configflags

0 commit comments

Comments
 (0)