2015-05-01 88 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