setOb-6ren">
gpt4 book ai didi

c++ - Qt:通过 QMainWindow::save/restoreState 控制 DockWidgets?

转载 作者:行者123 更新时间:2023-11-30 01:50:09 26 4
gpt4 key购买 nike

如果我有这样的停靠小部件:

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 吗?

最佳答案

获取小部件的指针与保存/恢复 GUI 状态无关。当您调用 saveState() 函数时,它会遍历所有组件并存储它们的坐标、方向等。当您调用 restoreState() 时,所有小部件应该已经创建是为了让函数调整它们的几何形状。

如果您需要获取 anchor 接窗口的指针,只需将其作为成员变量存储在您的类中即可。所以定义为:

class MainWindow : public QMainWindow
{
[..]
private:
QDockWidget *shapesDockWidget;
};

并在创建 anchor 接窗口实例时使用该变量:

shapesDockWidget = new QDockWidget(tr("Shapes"));

关于c++ - Qt:通过 QMainWindow::save/restoreState 控制 DockWidgets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27940421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com