Windows 如果缺少QDockwidget,QSettings restore会导致应用程序在显示时冻结()
我有一个加载.dll的Qt应用程序,它将把Windows 如果缺少QDockwidget,QSettings restore会导致应用程序在显示时冻结(),windows,qt,qdockwidget,qsettings,Windows,Qt,Qdockwidget,Qsettings,我有一个加载.dll的Qt应用程序,它将把QDockwidget小部件添加到QMainWindow。为了保持尺寸和几何图形,我将它们保存在QMainWindow QSettings settings; settings.setValue("MainWindow/geometry", saveGeometry()); settings.setValue("MainWindow/windowState", saveState()); 启动时,我读回设置 QSetti
QDockwidget
小部件添加到QMainWindow
。为了保持尺寸和几何图形,我将它们保存在QMainWindow
QSettings settings;
settings.setValue("MainWindow/geometry", saveGeometry());
settings.setValue("MainWindow/windowState", saveState());
启动时,我读回设置
QSettings settings;
restoreState(settings.value("MainWindow/windowState").toByteArray());
restoreGeometry(settings.value("MainWindow/geometry").toByteArray());
就在调用show()
之前
当我运行应用程序时,关闭它,然后删除其中一个DLL(有效地删除以前在启动时加载的QDockwidget
),应用程序将在show()
调用QMainWindow
时冻结。我可以通过删除注册表文件夹(我在Windows中)HKEY\u CURRENT\u USER\Software\MyCompany\MyApplication\MainWindow
使应用程序正常启动,但我丢失了存储在其中的所有其他信息
我想要的是让UI看起来像是丢失的QDockWidget
被隐藏,永远无法恢复,而不是破坏所有几何体和状态信息的胡说八道
有人见过这个问题吗?甚至解决了!?!如果有任何提示、提示或解决方法,我将不胜感激
干杯如果您知道要删除哪个dock小部件,可以在保存主窗口的状态之前将其关闭,这样该状态就不会包含已删除dock小部件的设置。为什么不使用QLibrary检查DLL的可用性,如果相应的LIB不可用,您没有分别从QSettings读取内容?问题是它是一个开放接口,我们不知道将加载什么。所以我们不知道DLL或小部件的名称