前言
最近在使用visual studio 2022和qt開發(fā)項目時,涉及到制作大數據可視化界面的工作。
為了完成這一功能,查詢了現有的實現方案,最終選擇使用:Qt-Advanced-Docking-System
作為布局方案的實現方式。
此時,就遇到幾個問題:
- 如何下載Qt-Advanced-Docking-System
- 如何在visual studio中載入Qt-Advanced-Docking-System插件
- 如何使用Qt-Advanced-Docking-System
接下來將根據這幾個問題,完成本文敘述。
一、如何下載Qt-Advanced-Docking-System
下載鏈接:github地址 https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System
二、如何在visual studio中載入Qt-Advanced-Docking-System插件
1.生成dll和lib
- 打開壓縮包Qt-Advanced-Docking-System-master.zip(不管你是git下來還是從哪下載下來的)
- 找到Qt-Advanced-Docking-System-master\src目錄,用qt-creator打開src.pro
- 通過Debug模式,和Release模式各自buid一遍
- 在Qt-Advanced-Docking-System-master\lib目錄下,能夠得到我們想要的:
qtadvanceddockingd.dll qtadvanceddockingd.lib
qtadvanceddocking.dll qtadvanceddocking.lib
收好。
2.導入dll和lib
- 接下來在你喜歡的目錄(我的話就在項目里新建一個bin\dock目錄用來放置庫和頭文件)里,新建一個include目錄和一個lib目錄
- 將Qt-Advanced-Docking-System-master\src目錄下的所有.h和.cpp文件放到剛剛建好的哪個include目錄下
- 將Qt-Advanced-Docking-System-master\lib下剛剛生成的dll和lib文件放到剛剛建好的lib目錄下
- 在你的項目里,分別在debug和release的屬性管理器中,各新建一個新的屬性頁,我起名叫adsdockd.props和adsdock.props。
- 在adsdockd.props,adsdock.props中 包含目錄給include,庫目錄給lib
- adsdockd.props中 鏈接器-輸入-附加依賴項 加上qtadvanceddockingd.lib
- adsdock.props中 鏈接器-輸入-附加依賴項 加上qtadvanceddocking.lib
- 在跑起來生成的debug目錄下放qtadvanceddockingd.dll
- 在跑起來生成的release目錄下放qtadvanceddocking.dll
- 在享用的地方,加上#include “DockManager.h”
三、如何使用Qt-Advanced-Docking-System
1.新建??看翱诤痛翱诠芾?/h3>
.h文件中:
#include "DockManager.h"
類中:
private:
ads::CDockManager* m_pDockManager = nullptr;
QMainWindow* visualwidget = nullptr;//用于放置大數據可視化的窗口
void initVisualWidget();//初始化dock窗口
.cpp文件中:
visualwidget = new QMainWindow(<放的新建的窗口指針>);
visualwidget->setWindowFlags(Qt::Widget);//修改窗口為Widget屬性
m_pDockManager = new ads::CDockManager(visualwidget);
ads::CDockWidget* dock_1 = new ads::CDockWidget(tr("dock_1"), visualwidget);//窗口1
dock_1->setWidget(<你要放在懸浮窗口中的窗口>);
dock_1->setFeatures(ads::CDockWidget::AllDockWidgetFeatures);//可以停靠的位置
m_pDockManager->addDockWidget(ads::CenterDockWidgetArea, dock_1);
//以上可以多放幾個
//...
QMenu * viewMenu = visualwidget->menuBar()->addMenu(tr("Display Window")); //展示窗口
viewMenu->addAction(dock_1->toggleViewAction()); //把之前新建的窗口都放進去,在下拉菜單里可以控制是否展示
2.實現布局存儲和載入
.h文件中:
#include “DockManager.h”
類中:
private slots:
//保存大數據展示布局
void saveVisualState();
//載入大數據展示布局
void restoreVisualState();
.cpp文件中:
QMenu* setViewMenu = visualwidget->menuBar()->addMenu(tr("Display Settings")); //展示設定
setViewMenu->addAction(tr("Save layout"), this, SLOT(saveVisualState()));//保存布局
setViewMenu->addAction(tr("Restore layout"), this, SLOT(restoreVisualState()));//載入布局
void saveVisualState()
{
QFile file(App_Path + "/cfg/VisualLayout.ini");
if (file.open(QIODevice::WriteOnly))//不存在則創(chuàng)建,默認覆蓋 | QIODevice::Append
//if (file.open(QIODevice::WriteOnly | QIODevice::Append));//文末追加,不存在則創(chuàng)建
{
QDataStream out(&file);
out << m_pDockManager->saveState();
file.close();
}
}
void restoreVisualState()
{
QFile file(App_Path + "/cfg/VisualLayout.ini");
if (file.open(QIODevice::ReadOnly))
{
QByteArray ba;
QDataStream in(&file);
in >> ba;
file.close();
if (m_pDockManager->restoreState(ba))
{
qDebug() << QString("載入布局界面成功");
}
else
{
qDebug() << QString("載入布局界面失敗") << App_Path + "/cfg/VisualLayout.ini";
}
}
}
3.額外注意點
在mainwindow中或者dock中增加layout很可能不生效,需要加一個widget嵌套一下才行。文章來源:http://www.zghlxwxcb.cn/news/detail-491278.html
總結
差不多就這樣了,基于上述描述,就可以正常使用了。文章來源地址http://www.zghlxwxcb.cn/news/detail-491278.html
到了這里,關于Visual Studio Qt Qt-Advanced-Docking-System 新建??看翱?布局記錄+布局載入的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!