-1

我需要在我的应用程序中保存和恢复 QToolbars 的位置。当工具栏停靠到不同的区域时,我可以保存该区域并在函数 QMainWindow::addToolBar 中分配它。但是当几个工具栏停靠在同一个区域时,我不知道它们当前在屏幕上的顺序是什么。我试过了

QList<QToolBar*> toolbars = findChildren<QToolBar*>();

但这似乎按创建顺序返回工具栏,而不是屏幕上当前的排列方式(用户可以移动它们)。

4

1 回答 1

1

在 Qt 中有一种简单而直接的方式来做你想做的事情。有QMainWindow一个方法saveState()

保存此主窗口的工具栏和停靠小部件的当前状态。

以及restoreState()相反的方法。

更多信息可以在这里找到。

要保存和恢复QMainWindow的几何本身,您仍然可以使用QWidget::saveGeometry()QWidget::restoreGeometry()

两者结合的示例也可以在saveState()的文档中找到:

要在窗口关闭时保存几何图形,您可以实现如下关闭事件:

void MyMainWindow::closeEvent(QCloseEvent *event)
{
    QSettings settings("MyCompany", "MyApp");
    settings.setValue("geometry", saveGeometry());
    settings.setValue("windowState", saveState());
    QMainWindow::closeEvent(event);
}
于 2015-05-02T01:16:09.547 回答