Qt基于开源Qt-Advanced-Docking-System实现高级窗口停靠系统

  1. 下载Qt-Advanced-Docking-System-master资源包,资源包内提供了demo使用案例,github下载较慢,提供免积分资源包。

免积分下载地址:https://download.csdn.net/download/ever__ever/88677212
Qt基于开源Qt-Advanced-Docking-System实现高级窗口停靠系统_第1张图片

  1. 新建Qt项目“QtDockWindow”,复制资源包内src文件夹到Qt项目文件夹下(工作空间不包含中文),将src文件夹名称改为DockWindow。
  2. 打开Qtcreator,打开项目:选择src->DockWindow.pro

Qt基于开源Qt-Advanced-Docking-System实现高级窗口停靠系统_第2张图片

  1. 选择构建套件,此处以MinGW为例,选择debug和release生成的库不一样。然后点击“构建”,不是运行。输出目标如上,在当前项目的上一层的lib/libs文件夹内。在windows系统中我们使用dll库。

Qt基于开源Qt-Advanced-Docking-System实现高级窗口停靠系统_第3张图片

  1. 将下载下来的资源包中的ads.pri文件复制到Qt项目文件夹中。
  2. 在Qt项目pro文件中包含一下ads.pri
include(./ads.pri);
  1. 将编译生成的qtadvanceddocking.dll文件放到Qt项目目录下,在pro文件中添加一下库。
LIBS += lqtadvanceddocking
  1. 添加一下qtadvanceddocking头文件
INCLUDEPATH += ./DockWindow
DEPENDPATH += ./DockWindow
  1. 在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;
}

效果:
Qt基于开源Qt-Advanced-Docking-System实现高级窗口停靠系统_第4张图片

源码下载:https://download.csdn.net/download/ever__ever/88677418

你可能感兴趣的:(Qt,qt,开源,开发语言)