1、编译Qt-Advanced-Docking-System库
1.1、下载Qt-Advanced-Docking-System库
Qt-Advanced-Docking-System: Qt-Advanced-Docking-System镜像仓库https://gitee.com/czyt1988/Qt-Advanced-Docking-System这是使用的是尘中远大佬的分支库,不是最原版的库。使用步骤是没有差别的。
解压后目录结构如下:
1.2用Qt creator打开工程
1.3、编译Qt-Advanced-Docking-System库
右击src,构建生成
qtadvanceddocking.dll、libqtadvanceddocking.a 两个文件
2、引用Qt-Advanced-Docking-System库
2.1打开自己的项目工程
在自己的项目上路中创建ads目录
这里使用的是上篇文章中的项目。需要引用ads库的工程
2.2、复制库文件与头文件
2.2.1、复制头文件
把Qt-Advanced-Docking-System-master工程目录下的src目录复制到自己工程的ads目录下,并把src改为head(不改也行),把head目录中的cpp文件删除(不删也行)
2.2.2、复制库文件
把Qt-Advanced-Docking-System-master编译输出目录下的qtadvanceddocking.dll、libqtadvanceddocking.a 两个文件复制到自己工程的ads目录下。
2.3、添加库
2.3.1、右击自己的工程,打开菜单。
2.3.2、选择外部库
2.3.3、选择库文件路径
2.3.4引用完成
3、使用
3.1在MainWindow.h中声明ads管理类对象
3.1.1、添加对ads管理类的头文件的引用
#include "DockManager.h"
3.1.2、添加管理类的对象
ads::CDockManager* m_DockManager;
3.2使用
3.2.1创建管理类对象
m_DockManager = new ads::CDockManager(this);
3.2.2创建DockWidget对象,并添加到管理类对象中
//创建一个DockWidget对象
ads::CDockWidget* DockWidget = new ads::CDockWidget("Label 1");
//DockWidget对象中放置一个文本
DockWidget->setWidget(new QLabel("Label 1 文本"));
//添加到管理对象中
m_DockManager->addDockWidget(ads::TopDockWidgetArea, DockWidget);
//创建第二个
ads::CDockWidget* DockWidget2 = new ads::CDockWidget("Label 2");
DockWidget2->setWidget(new QLabel("Label 2 文本"));
m_DockManager->addDockWidget(ads::CenterDockWidgetArea, DockWidget2);
运行后界面:
3.2.2 窗体与菜单关联
//1、把DockWidget对象关联到applicationButton上
bar->applicationButton()->addAction(DockWidget->toggleViewAction());
bar->applicationButton()->addAction(DockWidget2->toggleViewAction());
//2、把DockWidget对象关联到菜单上
QMenu* menu = new QMenu();
menu->addAction(DockWidget->toggleViewAction());
menu->addAction(DockWidget2->toggleViewAction());
QAction* act = new QAction("视图");
act->setMenu(menu);
pannel2->addAction(act, QToolButton::MenuButtonPopup);
这样菜单就和窗体视图关联上,就可以通过菜单来控制视图的显示和隐藏啦 。