2015-05-01 45 views
-1

我需要在我的应用程序中保存和恢复QToolbars的位置。 当工具栏停靠在不同的区域时,我可以保存区域并将其分配到函数QMainWindow :: addToolBar中。但是,当几个工具栏停靠在同一区域时,我不知道它们按照什么顺序显示在屏幕上。 我试图如何获得qtoolbars订单

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

但这似乎回到工具栏创建顺序,而不是如何目前有安排在屏幕上(用户可以移动它们)。

回答

1

有一个简单而直接的方式来做你想要的Qt。 QMainWindow有一个方法saveState()

保存此主窗口的工具栏和dockwidgets的当前状态。

和方法restoreState()做的相反。

可以找到更多的信息here

要保存和恢复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); 
} 
+0

感谢您的回答!但我想将UI状态保存为ini文件中的人类可读字符串,而不是二进制数据。 – lightstep

+0

我的建议是深入挖掘Qt源代码。 :)(你知道从哪里开始) – mhcuervo