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


    一、概述

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

    项目源地址:

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

    使用案例入下:

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

    二、项目结构

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

    src 目录是源代码目录,这个目录最终生成的是一个动态库和静态库,我们可以改变里面的ads.qrc 或者里面的 stylesheets 文件,达到定制这个布局系统的外观显示情况。
    在这里插入图片描述

    三、安装配置

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

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

    在这里插入图片描述
    在这里插入图片描述
    在header 文件夹下包括如下的文件。
    在这里插入图片描述

    四、代码测试

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

    win32: LIBS += -L$$PWD/lib/ -lqtadvanceddocking
    
    INCLUDEPATH += $$PWD/header
    DEPENDPATH += $$PWD/header
    
    • 1
    • 2
    • 3
    • 4

    测试源码

    • 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();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
  • 相关阅读:
    AOT和单文件发布对程序性能的影响
    新华三学习记录
    Big Data -- Postgres
    Kafaka核心设计与实践原理(第一部分)
    Day17--购物车页面-商品列表-封装NumberBox
    云存储解决方案-阿里云OSS
    HTML基础
    【Java 2 】Java 类的封装与使用
    【腾讯云 TDSQL-C Serverless 产品体验】基于腾讯云轻量服务器以及 TDSQL-C 搭建 LNMP WordPress 博客系统
    java计算机毕业设计小说阅读网站源码+系统+数据库+lw文档+mybatis+运行部署
  • 原文地址:https://blog.csdn.net/qq_43680827/article/details/133577914