Qt:通过 QMainWindow::save/restoreState 控制 DockWidgets?
Qt: control DockWidgets by QMainWindow::save/restoreState?
如果我有这样的停靠小部件:
QDockWidget *shapesDockWidget = new QDockWidget(tr("Shapes"));
shapesDockWidget->setObjectName("shapesDockWidget");
shapesDockWidget->setWidget(treeWidget);
addDockWidget(Qt::RightDockWidgetArea, shapesDockWidget);
按照 QMainWindow::save/restoreState 上的文档,似乎我可以直接 save/restore 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 ?
获取小部件的指针与 saving/restoring 您的 GUI 状态无关。当您调用 saveState()
函数时,它会遍历所有组件并存储它们的坐标、方向等。当您调用 restoreState()
时,所有小部件 应该已经创建 让该函数调整它们的几何形状。
如果您需要获取扩展坞 window 的指针,只需将其作为成员变量存储在 class 中即可。所以定义为:
class MainWindow : public QMainWindow
{
[..]
private:
QDockWidget *shapesDockWidget;
};
并在创建 dock 实例时使用该变量 window:
shapesDockWidget = new QDockWidget(tr("Shapes"));
如果我有这样的停靠小部件:
QDockWidget *shapesDockWidget = new QDockWidget(tr("Shapes"));
shapesDockWidget->setObjectName("shapesDockWidget");
shapesDockWidget->setWidget(treeWidget);
addDockWidget(Qt::RightDockWidgetArea, shapesDockWidget);
按照 QMainWindow::save/restoreState 上的文档,似乎我可以直接 save/restore 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 ?
获取小部件的指针与 saving/restoring 您的 GUI 状态无关。当您调用 saveState()
函数时,它会遍历所有组件并存储它们的坐标、方向等。当您调用 restoreState()
时,所有小部件 应该已经创建 让该函数调整它们的几何形状。
如果您需要获取扩展坞 window 的指针,只需将其作为成员变量存储在 class 中即可。所以定义为:
class MainWindow : public QMainWindow
{
[..]
private:
QDockWidget *shapesDockWidget;
};
并在创建 dock 实例时使用该变量 window:
shapesDockWidget = new QDockWidget(tr("Shapes"));