2024.3.21记录缺陷
点击可驻留的控件“Detach Group”之后,再操作该控件,会导致程序崩溃,临时解决方案,取消脱离使能
DockWidget->setFeature(ads::CDockWidget::DockWidgetFloatable, false);
DockWidget 为 new ads::CDockWidget("xxx") 对象
操作方法:窗口浮动后,再将窗口dock(停靠)到主界面上,发现程序崩溃,操作的窗口标题(tab)显示在dock位置的中部。
2024.5.14记录措施
解决方法:
重新拉取代码,代码位置GitHub - githubuser0xFFFF/Qt-Advanced-Docking-System: Advanced Docking System for Qt
重新编译前设置:
src.pro中处理,注释去掉作者的DESTDIR = $${ADS_OUT_ROOT}/lib
新增生成路径,区分了MSVC与mingGW
ADS_OUT_ROOT = $${OUT_PWD}/..
CONFIG += c++14
CONFIG += debug_and_release
TARGET = $$qtLibraryTarget(qtadvanceddocking)
DEFINES += QT_DEPRECATED_WARNINGS
TEMPLATE = lib
#DESTDIR = $${ADS_OUT_ROOT}/lib #注释掉
QT += core gui widgets
!adsBuildStatic {
CONFIG += shared
DEFINES += ADS_SHARED_EXPORT
}
adsBuildStatic {
CONFIG += staticlib
DEFINES += ADS_STATIC
}
windows {
# MinGW
*-g++* {
QMAKE_CXXFLAGS += -Wall -Wextra -pedantic
target.path = $$PREEFIX/lib_MinGW
CONFIG(debug,debug|release){
#调试版本
DESTDIR = $${ADS_OUT_ROOT}/lib_MinGW/Debug
}
CONFIG(release,debug|release){
#发布版本
DESTDIR = $${ADS_OUT_ROOT}/lib_MinGW/Release
}
}
# MSVC
*-msvc* {
QMAKE_CXXFLAGS += /utf-8
target.path = $$PREEFIX/lib_MSVC
CONFIG(debug,debug|release){
#调试版本
DESTDIR = $${ADS_OUT_ROOT}/lib_MSVC/Debug
}
CONFIG(release,debug|release){
#发布版本
DESTDIR = $${ADS_OUT_ROOT}/lib_MSVC/Release
}
}
}
注释掉之前的代码中以下语句
DockWidget->setFeature(ads::CDockWidget::DockWidgetFloatable, false);
问题分析:
之前拉取的代码日期是2024.3.21(错误源已不可考,不知道是从哪个copier弄的,初学)
新拉取的代码日期是2024.5.14(原作者提供的源) 作者重新更新修复了Bug,问题解决,完美实现dock停靠以及浮动。
资源位置:(为csdn链接)
https://download.youkuaiyun.com/download/tangchao340/89305841
csdn链接下面备注了github链接位置,请不要捐赠积分。
2024.5.17记录(代码调用顺序)
使用代码顺序
this->setCentralWidget(Q_NULLPTR);
m_dockManager = new ads::CDockManager(this);
setTabPosition(Qt::AllDockWidgetAreas,QTabWidget::North);
qRegisterMetaType<QDockWidget::DockWidgetFeatures>();
释放方法
官方例子中的推荐(20240613增加)
//============================================================================
void CMainWindow::closeEvent(QCloseEvent* event)
{
// Delete dock manager here to delete all floating widgets. This ensures
// that all top level windows of the dock manager are properly closed
DockManager->deleteLater();
QMainWindow::closeEvent(event);
}
本文记录了QtAdvancedDockingSystem中关于‘DetachGroup’控件导致程序崩溃的问题,通过重新编译并调整配置解决了该问题,重点在于代码更新和编译设置的更改。
3634





