我想用我的MainWindow提供的saveState()/ restoreState()函数保存我的自定义DockWidgets(继承自QDockWidget)。
我有两个问题:
1.如何保存和恢复Dockwidgets?
- 我已经尝试将我的自定义DockWidgets注册为QMetaType并实现默认的Constructor,复制Constructor,Destructor和Streaming操作符。
2.如何识别加载的DockWidgets?
- 例如:如果保存了2个DockWidgets并且我使用restoreState()加载它们,有没有办法获取指向这些加载的Widgets的指针?
谢谢, 托拜厄斯
答案 0 :(得分:2)
您是否阅读了QMainWindow::saveState
文档?
您的对象是否唯一命名? (QObject::setObjectName
)
作为旁注,QObjects不应该有复制构造函数,请参阅Q_DISABLE_COPY
答案 1 :(得分:1)
我已经解决了问题2:
非常简单.. QList <
QDockWidget * >
dockWidgetList = findChildren <
QDockWidget * >
();
但是加载后列表当前是空的,因为没有加载小部件;)
答案 2 :(得分:1)
您似乎误解了有关restoreState的一些内容 - 它不会重新创建您的Dock小部件(无论如何都可以这样做?)但只会恢复其位置和状态(隐藏,空闲或停靠)。在调用restoreState之前,您仍然需要手动创建dock小部件。