Qt扩展-Advanced-Docking 简介及配置

Advanced-Docking 简介及配置

  • 一、概述
  • 二、项目结构
  • 三、安装配置
  • 四、代码测试

一、概述

Advanced-Docking 是类似QDockWidget 功能的多窗口停靠功能的库。很像visual stdio 的 停靠功能,这个库对于停靠使用的比较完善。很多的软件都使用了这个框架。

项目源地址:

https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System

使用案例入下:

  • Qt Creator
    从4.12版本开始,Qt Creator在其Qt Designer 中使用了该框架。
    Qt扩展-Advanced-Docking 简介及配置_第1张图片
  • CETONI Elements
    CETONI Elements软件是一款全面的、基于插件的模块化实验室自动化软件,用于使用联合图形用户界面控制CETONI设备。该软件具有强大的脚本系统,可自动执行流程。这个软件也使用了这个视窗布局系统,使用户可以自由安排各种插件提供的所有视图和窗口。
    Qt扩展-Advanced-Docking 简介及配置_第2张图片

二、项目结构

demo 目录和 example 目录下都是 项目的使用例子,我们就是从里面去参考这些示例即可。

src 目录是源代码目录,这个目录最终生成的是一个动态库和静态库,我们可以改变里面的ads.qrc 或者里面的 stylesheets 文件,达到定制这个布局系统的外观显示情况。
Qt扩展-Advanced-Docking 简介及配置_第3张图片

三、安装配置

我们打开源码编译后的 lib 目录下的内容,看我们需要使用哪种库引入即可。

同时把 src 里面的头文件给 复制到新的文件夹下

Qt扩展-Advanced-Docking 简介及配置_第4张图片
在这里插入图片描述
在header 文件夹下包括如下的文件。
Qt扩展-Advanced-Docking 简介及配置_第5张图片

四、代码测试

在 .pro 文件中添加,引入库的功能

win32: LIBS += -L$$PWD/lib/ -lqtadvanceddocking

INCLUDEPATH += $$PWD/header
DEPENDPATH += $$PWD/header

测试源码

  • main.cpp
#include "ADSUse.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    qDebug()<< QResource::registerResource("D:/Programs_Projects/Qt/GraduationDesign/MindCheck/Rescourses.rcc");

    QApplication::setStyle(QStyleFactory::create("Fusion"));
    ADSUse w;
    w.show();

    return a.exec();
}
  • ADSUse.h
#ifndef ADSUSE_H
#define ADSUSE_H

#include 
#include 
#include 
#include 

namespace Ui {
class ADSUse;
}

class ADSUse : public QWidget
{
    Q_OBJECT

public:
    explicit ADSUse(QWidget *parent = nullptr);
    ~ADSUse();

private:
    Ui::ADSUse *ui;

    // The main container for docking
    ads::CDockManager* m_DockManager;
};

#endif // ADSUSE_H
  • ADSUse.cpp

#include "ADSUse.h"
#include "ui_ADSUse.h"

ADSUse::ADSUse(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::ADSUse)
{
    ui->setupUi(this);

    // Create the dock manager after the ui is setup. Because the
    // parent parameter is a QMainWindow the dock manager registers
    // itself as the central widget as such the ui must be set up first.
    m_DockManager = new ads::CDockManager(this);

    // Create example content label - this can be any application specific
    // widget
    QLabel* l = new QLabel();
    l->setWordWrap(true);
    l->setAlignment(Qt::AlignTop | Qt::AlignLeft);
    l->setText("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. ");

    // Create a dock widget with the title Label 1 and set the created label
    // as the dock widget content
    ads::CDockWidget* DockWidget = new ads::CDockWidget("Label 1");
    DockWidget->setWidget(l);

    // Add the toggleViewAction of the dock widget to the menu to give
    // the user the possibility to show the dock widget if it has been closed
    //ui->menuView->addAction(DockWidget->toggleViewAction());

    // Add the dock widget to the top dock widget area
    m_DockManager->addDockWidget(ads::TopDockWidgetArea, DockWidget);
}

ADSUse::~ADSUse()
{
    delete ui;
}

你可能感兴趣的:(#,▶,Qt扫盲,AdvancedDocking,Docking,停靠,Qt高级视窗,qt5)