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 中使用了该框架。
  • CETONI Elements
    CETONI Elements软件是一款全面的、基于插件的模块化实验室自动化软件,用于使用联合图形用户界面控制CETONI设备。该软件具有强大的脚本系统,可自动执行流程。这个软件也使用了这个视窗布局系统,使用户可以自由安排各种插件提供的所有视图和窗口。

二、项目结构

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

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

三、安装配置

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

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


在header 文件夹下包括如下的文件。

四、代码测试

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

cpp 复制代码
win32: LIBS += -L$$PWD/lib/ -lqtadvanceddocking

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

测试源码

  • main.cpp
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
cpp 复制代码
#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
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;
}
相关推荐
Xam_d_LM2 天前
【Qt】在 Qt Creator 中使用图片资源方法(含素材网站推荐)
开发语言·c++·qt·ui·贴图·qt5
苟且.9 天前
QStackedWidget使用实例
qt5
吃面不喝汤661 个月前
如何为 QSlider 编写 QSS 样式:详细教程
qt5
StruggleRookie2 个月前
ubuntu20.4安装Qt5.15.2
ubuntu·qt5
HelloTonyGo2 个月前
QT5实现https的post请求(QNetworkAccessManager、QNetworkRequest和QNetworkReply)
https·wireshark·ssl·post·qt5
29747860482 个月前
Qt基础类03-直线类QLine
qt·qt5·qline·qlinef·直线类
29747860482 个月前
QT基础之【模块】
模块·module·入门·基础·qt5
yayapoi~3 个月前
qml formLayout实现方式
qt5·qml
Whale_XH3 个月前
基于QT实现的简易WPS(已开源)
wps·qt5·qt项目
炫酷的伊莉娜4 个月前
【QT】常用控件(概述、QWidget核心属性、按钮类控件、显示类控件、输入类控件、多元素控件、容器类控件、布局管理器)
qt·qt creator·控件·qt5·qwidget