如何保存自定义DockWidgets

时间:2010-03-02 09:10:11

标签: c++ qt

我想用我的MainWindow提供的saveState()/ restoreState()函数保存我的自定义DockWidgets(继承自QDockWidget)。

我有两个问题: 1.如何保存和恢复Dockwidgets?
- 我已经尝试将我的自定义DockWidgets注册为QMetaType并实现默认的Constructor,复制Constructor,Destructor和Streaming操作符。
2.如何识别加载的DockWidgets?
- 例如:如果保存了2个DockWidgets并且我使用restoreState()加载它们,有没有办法获取指向这些加载的Widgets的指针?

谢谢, 托拜厄斯

3 个答案:

答案 0 :(得分:2)

您是否阅读了QMainWindow::saveState文档?

您的对象是否唯一命名? (QObject::setObjectName

作为旁注,QObjects不应该有复制构造函数,请参阅Q_DISABLE_COPY

答案 1 :(得分:1)

我已经解决了问题2:
非常简单.. QList < QDockWidget * > dockWidgetList = findChildren < QDockWidget * >();
但是加载后列表当前是空的,因为没有加载小部件;)

答案 2 :(得分:1)

您似乎误解了有关restoreState的一些内容 - 它不会重新创建您的Dock小部件(无论如何都可以这样做?)但只会恢复其位置和状态(隐藏,空闲或停靠)。在调用restoreState之前,您仍然需要手动创建dock小部件。