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

测试源码

  • 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 <QWidget>
#include <DockManager.h>
#include <DockWidget.h>
#include <QLabel>

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;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太阳风暴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值