- 下载Qt-Advanced-Docking-System-master资源包,资源包内提供了demo使用案例,github下载较慢,提供免积分资源包。
免积分下载地址:https://download.youkuaiyun.com/download/ever__ever/88677212
- 新建Qt项目“QtDockWindow”,复制资源包内src文件夹到Qt项目文件夹下(工作空间不包含中文),将src文件夹名称改为DockWindow。
- 打开Qtcreator,打开项目:选择src->DockWindow.pro
- 选择构建套件,此处以MinGW为例,选择debug和release生成的库不一样。然后点击“构建”,不是运行。输出目标如上,在当前项目的上一层的lib/libs文件夹内。在windows系统中我们使用dll库。
- 将下载下来的资源包中的ads.pri文件复制到Qt项目文件夹中。
- 在Qt项目pro文件中包含一下ads.pri
include(./ads.pri);
- 将编译生成的qtadvanceddocking.dll文件放到Qt项目目录下,在pro文件中添加一下库。
LIBS += lqtadvanceddocking
- 添加一下qtadvanceddocking头文件
INCLUDEPATH += ./DockWindow
DEPENDPATH += ./DockWindow
- 在MainWindow中使用这个库,创建两个停靠窗口
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
CDockManager::setConfigFlag(CDockManager::FloatingContainerHasWidgetTitle, true);
CDockManager::setConfigFlag(CDockManager::FloatingContainerHasWidgetIcon, true);
CDockManager::setConfigFlag(CDockManager::FocusHighlighting, true);
CDockManager::setConfigFlag(CDockManager::DockAreaHasUndockButton, false);
dockManager = new CDockManager(this);
TestForm *aForm = new TestForm();
aForm->setLabelText("this is window a");
CDockWidget *aDockwidget = new CDockWidget("window a");
aDockwidget->setWidget(aForm);
// aDockwidget->setIcon(QIcon(":/src/images/folder.png"));
dockAreaWidget_left = dockManager->addDockWidget(LeftDockWidgetArea, aDockwidget);
dockAreaWidget_left->setAllowedAreas(OuterDockAreas);
TestForm *bForm = new TestForm();
bForm->setLabelText("this is window b");
CDockWidget *bDockwidget = new CDockWidget("window b");
bDockwidget->setWidget(bForm);
// bDockwidget->setIcon(QIcon(":/src/images/folder.png"));
dockAreaWidget_right = dockManager->addDockWidget(RightDockWidgetArea, bDockwidget);
dockAreaWidget_right->setAllowedAreas(OuterDockAreas);
}
MainWindow::~MainWindow()
{
delete ui;
}
效果:
源码下载:https://download.youkuaiyun.com/download/ever__ever/88677418