我需要在我的应用程序中保存和恢复 QToolbars 的位置。当工具栏停靠到不同的区域时,我可以保存该区域并在函数 QMainWindow::addToolBar 中分配它。但是当几个工具栏停靠在同一个区域时,我不知道它们当前在屏幕上的顺序是什么。我试过了
QList<QToolBar*> toolbars = findChildren<QToolBar*>();
但这似乎按创建顺序返回工具栏,而不是屏幕上当前的排列方式(用户可以移动它们)。
在 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); }