如果我有这样的停靠小工具:
QDockWidget *shapesDockWidget = new QDockWidget(tr("Shapes"));
shapesDockWidget->setObjectName("shapesDockWidget");
shapesDockWidget->setWidget(treeWidget);
addDockWidget(Qt::RightDockWidgetArea, shapesDockWidget);
按照QMainWindow :: save / restoreState的文档,似乎我可以使用以下函数直接保存/恢复dockwidgets:
void MainWindow::writeSettings()
{
QSettings settings("Software Inc.", "Icon Editor");
settings.beginGroup("mainWindow");
settings.setValue("geometry", saveGeometry());
settings.setValue("state", saveState());
settings.endGroup();
}
void MainWindow::readSettings()
{
QSettings settings("Software Inc.", "Icon Editor");
settings.beginGroup("mainWindow");
restoreGeometry(settings.value("geometry").toByteArray());
restoreState(settings.value("state").toByteArray());
settings.endGroup();
}
但是我怎么能得到指向恢复的dockwidgets的指针?像指针shapesDockWidget?
答案 0 :(得分:4)
获取窗口小部件的指针与保存/恢复GUI状态无关。当您调用saveState()
函数时,它会迭代所有组件并存储其坐标,方向等。当您致电restoreState()
时,应已创建所有小部件 以让功能调整它们的几何形状。
如果您需要获取停靠窗口的指针,只需将其存储为类中的成员变量即可。所以将其定义为:
class MainWindow : public QMainWindow
{
[..]
private:
QDockWidget *shapesDockWidget;
};
在创建停靠窗口的实例时使用该变量:
shapesDockWidget = new QDockWidget(tr("Shapes"));