目录
写过一篇扩展库KDDockWidgets的编译方法文档,请参见:Qt扩展库KDDockWidgets编译
本文在上述文章基础上,使用KDDockWidgets库,供参考。
(1)创建QMainWindow工程,工程名称自己定义
本例中工程名称为:KDDockWidgetsSample
Debug模式下,编译、运行,在
build-KDDockWidgetsSample-Desktop_Qt_5_14_2_MinGW_32_bit-Debug\debug
路径下生成可执行文件:
(2)拷贝KDDockWidgets库
如下图所示,KDDockWidgets库的安装路径Install目录下bin、include、lib三个文件夹拷贝至
KDDockWidgetsSample项目根目录下,即KDDockWidgetsSample.pro所在路径下:
其中bin目录下libkddockwidgets1d.dll文件拷贝至build-KDDockWidgetsSample-Desktop_Qt_5_14_2_MinGW_32_bit-Debug\debug路径下,即KDDockWidgetsSample.exe所在目录下。
注:此处bin文件夹拷贝至KDDockWidgetsSample项目根目录下的操作不是必须的
(3)链接KDDockWidgets库
打开KDDockWidgetsSample.pro文件,增加如下路径:
(4)编写例子
mainwindow.h文件内容如下:
#include <QMainWindow>
#include <kddockwidgets/MainWindow.h>
#include <kddockwidgets/DockWidget.h>
#include <QLabel>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
// 主Dock 窗口
KDDockWidgets::MainWindow *m_pDockMainWindow;
//Dock 窗口
KDDockWidgets::DockWidget *m_pWorkDock;
KDDockWidgets::DockWidget *m_pQuestionDock;
KDDockWidgets::DockWidget *m_pSearchDock;
KDDockWidgets::DockWidget *m_pEditorDock;
QLabel* m_pWorkLabel;
QLabel* m_pQuestionLabel;
QLabel* m_pSearchLabel;
QLabel* m_pEditorLabel;
Ui::MainWindow *ui;
};
mainwindow.cpp文件内容如下:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_pDockMainWindow = new KDDockWidgets::MainWindow("DOCKMAINWINDOW");
m_pWorkDock = new KDDockWidgets::DockWidget("WORKDOCK");
m_pWorkDock->setMaximumWidth(300);
m_pWorkDock->setMinimumWidth(120);
m_pWorkDock->setTitle(tr("项目"));
m_pQuestionDock = new KDDockWidgets::DockWidget("QUESTIONDOCK");
m_pQuestionDock->setTitle(tr("问题"));
m_pQuestionDock->setMaximumWidth(600);
m_pSearchDock = new KDDockWidgets::DockWidget("SEARCHDOCK");
m_pSearchDock->setTitle(tr("搜索"));
m_pEditorDock = new KDDockWidgets::DockWidget("EDITORDOCK");
m_pEditorDock->setTitle(tr("编辑器"));
m_pWorkLabel = new QLabel;
m_pSearchLabel = new QLabel;
m_pQuestionLabel= new QLabel;
m_pEditorLabel = new QLabel;
m_pWorkDock->setWidget(m_pWorkLabel);
m_pSearchDock->setWidget(m_pSearchLabel);
m_pQuestionDock->setWidget(m_pQuestionLabel);
m_pEditorDock->setWidget(m_pEditorLabel);
this->setCentralWidget(m_pDockMainWindow);
m_pDockMainWindow->addDockWidget(m_pEditorDock, KDDockWidgets::Location_OnRight);
m_pDockMainWindow->addDockWidget(m_pSearchDock, KDDockWidgets::Location_OnBottom);
m_pDockMainWindow->addDockWidget(m_pWorkDock, KDDockWidgets::Location_OnLeft);
m_pSearchDock->addDockWidgetAsTab(m_pQuestionDock);
}
MainWindow::~MainWindow()
{
delete ui;
}
编译运行结果如下: