Skip to content

Commit 5443e5f

Browse files
Merge branch 'centralwidget'
2 parents 543d226 + 08a8cee commit 5443e5f

19 files changed

+468
-29
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,3 +382,4 @@ MigrationBackup/
382382
FodyWeavers.xsd
383383
/ build
384384
/Settings.ini
385+
.vscode/settings.json

examples/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ cmake_minimum_required(VERSION 3.5)
22
project(QtADSExamples LANGUAGES CXX VERSION ${VERSION_SHORT})
33
add_subdirectory(simple)
44
add_subdirectory(sidebar)
5-
add_subdirectory(deleteonclose)
5+
add_subdirectory(deleteonclose)
6+
add_subdirectory(centralwidget)

examples/centralwidget/CMakeLists.txt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
cmake_minimum_required(VERSION 3.5)
2+
project(ads_example_centralwidget VERSION ${VERSION_SHORT})
3+
find_package(Qt5 5.5 COMPONENTS Core Gui Widgets REQUIRED)
4+
set(CMAKE_INCLUDE_CURRENT_DIR ON)
5+
add_executable(CentralWidgetExample WIN32
6+
main.cpp
7+
mainwindow.cpp
8+
mainwindow.ui
9+
)
10+
target_include_directories(CentralWidgetExample PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../../src")
11+
target_link_libraries(CentralWidgetExample PRIVATE qtadvanceddocking)
12+
target_link_libraries(CentralWidgetExample PUBLIC Qt5::Core Qt5::Gui Qt5::Widgets)
13+
set_target_properties(CentralWidgetExample PROPERTIES
14+
AUTOMOC ON
15+
AUTORCC ON
16+
AUTOUIC ON
17+
CXX_STANDARD 14
18+
CXX_STANDARD_REQUIRED ON
19+
CXX_EXTENSIONS OFF
20+
VERSION ${VERSION_SHORT}
21+
EXPORT_NAME "Qt Advanced Docking System Central Widget Example"
22+
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib"
23+
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib"
24+
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/bin"
25+
)
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
ADS_OUT_ROOT = $${OUT_PWD}/../..
2+
3+
QT += core gui
4+
5+
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
6+
7+
TARGET = CentralWidgetExample
8+
DESTDIR = $${ADS_OUT_ROOT}/lib
9+
TEMPLATE = app
10+
CONFIG += c++14
11+
CONFIG += debug_and_release
12+
13+
# The following define makes your compiler emit warnings if you use
14+
# any Qt feature that has been marked deprecated (the exact warnings
15+
# depend on your compiler). Please consult the documentation of the
16+
# deprecated API in order to know how to port your code away from it.
17+
DEFINES += QT_DEPRECATED_WARNINGS
18+
19+
# You can also make your code fail to compile if it uses deprecated APIs.
20+
# In order to do so, uncomment the following line.
21+
# You can also select to disable deprecated APIs only up to a certain version of Qt.
22+
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
23+
24+
SOURCES += \
25+
main.cpp \
26+
mainwindow.cpp
27+
28+
HEADERS += \
29+
mainwindow.h
30+
31+
FORMS += \
32+
mainwindow.ui
33+
34+
LIBS += -L$${ADS_OUT_ROOT}/lib
35+
36+
# Dependency: AdvancedDockingSystem (shared)
37+
CONFIG(debug, debug|release){
38+
win32 {
39+
LIBS += -lqtadvanceddockingd
40+
}
41+
else:mac {
42+
LIBS += -lqtadvanceddocking_debug
43+
}
44+
else {
45+
LIBS += -lqtadvanceddocking
46+
}
47+
}
48+
else{
49+
LIBS += -lqtadvanceddocking
50+
}
51+
52+
INCLUDEPATH += ../../src
53+
DEPENDPATH += ../../src
54+

examples/centralwidget/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/centralwidget/mainwindow.cpp

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#include "mainwindow.h"
2+
3+
#include "ui_mainwindow.h"
4+
5+
#include <QWidgetAction>
6+
#include <QLabel>
7+
#include <QCalendarWidget>
8+
#include <QTreeView>
9+
#include <QFileSystemModel>
10+
#include <QTableWidget>
11+
#include <QHBoxLayout>
12+
#include <QRadioButton>
13+
#include <QPushButton>
14+
#include <QInputDialog>
15+
#include <QFileDialog>
16+
#include <QSettings>
17+
#include <QMessageBox>
18+
19+
#include "DockAreaWidget.h"
20+
#include "DockAreaTitleBar.h"
21+
#include "DockAreaTabBar.h"
22+
#include "FloatingDockContainer.h"
23+
#include "DockComponentsFactory.h"
24+
25+
using namespace ads;
26+
27+
CMainWindow::CMainWindow(QWidget *parent)
28+
: QMainWindow(parent)
29+
, ui(new Ui::CMainWindow)
30+
{
31+
ui->setupUi(this);
32+
CDockManager::setConfigFlag(CDockManager::OpaqueSplitterResize, true);
33+
CDockManager::setConfigFlag(CDockManager::XmlCompressionEnabled, false);
34+
DockManager = new CDockManager(this);
35+
36+
// Set central widget
37+
QCalendarWidget* calendar = new QCalendarWidget();
38+
CDockWidget* CentralDockWidget = new CDockWidget("CentralWidget");
39+
CentralDockWidget->setWidget(calendar);
40+
auto* CentralDockArea = DockManager->setCentralWidget(CentralDockWidget);
41+
CentralDockArea->setAllowedAreas(DockWidgetArea::OuterDockAreas);
42+
43+
// create other dock widgets
44+
QTreeView* fileTree = new QTreeView();
45+
fileTree->setFrameShape(QFrame::NoFrame);
46+
QFileSystemModel* fileModel = new QFileSystemModel(fileTree);
47+
fileModel->setRootPath(QDir::currentPath());
48+
fileTree->setModel(fileModel);
49+
CDockWidget* DataDockWidget = new CDockWidget("File system");
50+
DataDockWidget->setWidget(fileTree);
51+
DataDockWidget->resize(150, 250);
52+
DataDockWidget->setMinimumSize(100, 250);
53+
auto* fileArea = DockManager->addDockWidget(DockWidgetArea::LeftDockWidgetArea, DataDockWidget, CentralDockArea);
54+
ui->menuView->addAction(DataDockWidget->toggleViewAction());
55+
56+
QTableWidget* table = new QTableWidget();
57+
table->setColumnCount(3);
58+
table->setRowCount(10);
59+
CDockWidget* TableDockWidget = new CDockWidget("Table");
60+
TableDockWidget->setWidget(table);
61+
TableDockWidget->setMinimumSizeHintMode(CDockWidget::MinimumSizeHintFromDockWidget);
62+
TableDockWidget->resize(250, 150);
63+
TableDockWidget->setMinimumSize(200,150);
64+
DockManager->addDockWidget(DockWidgetArea::BottomDockWidgetArea, TableDockWidget, fileArea);
65+
ui->menuView->addAction(TableDockWidget->toggleViewAction());
66+
67+
QTableWidget* propertiesTable = new QTableWidget();
68+
table->setColumnCount(3);
69+
table->setRowCount(10);
70+
CDockWidget* PropertiesDockWidget = new CDockWidget("Properties");
71+
PropertiesDockWidget->setWidget(propertiesTable);
72+
PropertiesDockWidget->setMinimumSizeHintMode(CDockWidget::MinimumSizeHintFromDockWidget);
73+
PropertiesDockWidget->resize(250, 150);
74+
PropertiesDockWidget->setMinimumSize(200,150);
75+
DockManager->addDockWidget(DockWidgetArea::RightDockWidgetArea, PropertiesDockWidget, CentralDockArea);
76+
ui->menuView->addAction(PropertiesDockWidget->toggleViewAction());
77+
}
78+
79+
CMainWindow::~CMainWindow()
80+
{
81+
delete ui;
82+
}
83+

examples/centralwidget/mainwindow.h

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

examples/centralwidget/mainwindow.ui

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
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>
34+
<resources/>
35+
<connections/>
36+
</ui>

examples/examples.pro

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
TEMPLATE = subdirs
22

33
SUBDIRS = \
4+
centralwidget \
45
simple \
56
sidebar \
67
deleteonclose

src/DockAreaWidget.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,7 @@ void CDockAreaWidget::insertDockWidget(int index, CDockWidget* DockWidget,
441441
DockWidget->toggleViewInternal(true);
442442
}
443443
d->updateTitleBarButtonStates();
444+
updateTitleBarVisibility();
444445
}
445446

446447

@@ -955,6 +956,18 @@ CDockAreaTitleBar* CDockAreaWidget::titleBar() const
955956
}
956957

957958

959+
//============================================================================
960+
bool CDockAreaWidget::isCentralWidgetArea() const
961+
{
962+
if (dockWidgetsCount()!= 1)
963+
{
964+
return false;
965+
}
966+
967+
return dockManager()->centralWidget() == dockWidgets()[0];
968+
}
969+
970+
958971
//============================================================================
959972
QSize CDockAreaWidget::minimumSizeHint() const
960973
{

0 commit comments

Comments
 (0)