1. 程式人生 > >QT使用saveState()和restoreState()函式儲存和恢復介面佈局

QT使用saveState()和restoreState()函式儲存和恢復介面佈局

簡介:每次當我們自己寫的程式執行起來時,我們把介面調整到我們所喜歡的佈局。但是當我們把程式關閉了,下次重啟程式時,我們之前調整的介面佈局沒有了,恢復到了QT自預設的介面的介面佈局。這對於有我們操作非常不方便,還好QT提供了儲存介面佈局和恢復介面佈局的介面,我們只需要呼叫一下介面就可以儲存程式最新的介面佈局,下次重新啟動時再呼叫對用的介面恢復一下介面佈局就可了。

第一步:儲存介面佈局到檔案(Layout.ini),使用QT介面函式saveState(),使用方法如下所示。

1.1、在程式退出是呼叫一下 下面介面,儲存一下介面不到到Layout.ini檔案即可。

 //儲存介面佈局到Layout.ini
    QFile

file("/home/mark/Desktop/.Layout.ini"); 
    if (file.open(QIODevice::WriteOnly))
    {
        QDataStream out(&file);
        out << this->saveState();
        file.close();
    }

1.2、注意:Layout.ini檔案前面加一個. 即 .Layout.ini,表示這是一個隱藏檔案,在linux系統中建立檔案時,如果在檔案前面加一個.則系統就會自動隱藏這個檔案,如果想檢視到這個檔案,可以去到檔案所在的目錄使用快捷鍵Ctrl+H就可以檢視隱藏檔案,再次按Ctrl+H就會重新隱藏檔案。

第二步:恢復介面佈局,從檔案Layout.ini讀取最新的介面佈局狀態,使用QT介面函式restoreState(),使用方法如下所示。

2.1、在程式啟動時呼叫一下 下面的介面,就可以恢復最新的介面佈局。

 //從Layout.ini恢復介面佈局
    QFile file("/home/mark/Desktop/.Layout.ini");
    if (file.open(QIODevice::ReadOnly))
    {
        QByteArray ba;
        QDataStream in(&file);
        in >> ba;
        file.close();
        this

->restoreState(ba);
    }

相關推薦

QT使用saveState()restoreState()函式儲存恢復介面佈局

簡介:每次當我們自己寫的程式執行起來時,我們把介面調整到我們所喜歡的佈局。但是當我們把程式關閉了,下次重啟程式時,我們之前調整的介面佈局沒有了,恢復到了QT自預設的介面的介面佈局。這對於有我們操作非常不方便,還好QT提供了儲存介面佈局和恢復介面佈局的介面,我們只需要呼叫一下介

【QT】如何使用savestate()restoreState()來儲存恢復工具條,狀態列,其它檢視等的頁面佈局

如何使用savestate()和restoreState()來儲存和恢復工具條,狀態列,其它檢視等的頁面佈局 運用場景:建立一個基於QMainWindow的QT Widgets Application,然後根據需要新增選單欄、工具欄、狀態列等等;這是工具欄有很多,好多都疊在一起,經過拖拽

[譯]Android Activity Fragment 狀態儲存恢復的最佳實踐

譯者亦楓注:對於 Activity、Fragment 和 View 是如何儲存與恢復狀態的問題,相信很多開發人員都處於一知半解的狀態。最近剛好在總結 Fragment 的使用注意事項,無意中從網上看到國外的一篇好文,對這個問題做了一個全面的解析。加之使用視

函式指標指標函式用法區別

函式指標和指標函式用法和區別   前言 函式指標和指標函式,在學習 C 語言的時候遇到這兩個東西簡直頭疼,當然還有更頭疼的,比如什麼函式指標函式、指標函式指標、陣列指標、指標陣列、函式指標陣列等等,描述越長其定義就越複雜,當然理解起來就越難,特別是剛開始學習這門

【Visual Studio 擴充套件工具】使用ComponentOne中的GroupDefinitionSortDefinition屬性儲存還原佈局

概述 在此前的ComponentOne中,我們為C1FlexGrid(最快,最靈活的.Net資料網格控制元件)添加了一個非常強大的動態分組功能,這篇技術部落格《將動態分組新增到.NET表格控制元件FlexGrid中》是通過GroupDescriptions屬性為我們演示了此功能。 隨著ComponentOn

PyTorch(七)——模型的訓練測試、儲存載入

PyTorch的學習和使用(七) 模型的訓練和測試 在訓練模型時會在前面加上: model.train() 在測試模型時在前面使用: model.eval() 同時發現,如果不寫這兩個程式也可以執行,這是因為這兩個方法是針對在網路訓練和測試時採用不同方式的

使用ComponentOne中的GroupDefinitionSortDefinition屬性儲存還原佈局

下載ComponentOne最新版本 (一)概述 在此前的ComponentOne中,我們為C1FlexGrid(最快,最靈活的.Net資料網格控制元件)添加了一個非常強大的動態分組功能。 隨著ComponentOne Enterprise 2018v3版本的正式釋出,ComponentOn

Android Launcher分析修改2——Icon修改、介面佈局調整、桌布設定

<!-- Workspace cell size --> <dimen name="workspace_cell_width_land">88dp</dimen> <dimen name="workspace_cell_width_port">

PHP中explode()implode()函式講解實戰用法

一、函式講解 1、explode()函式  把字串打散為陣列: 2、implode()函式 把陣列元素組合為字串: (詳細講解見下文 三) 例如: <?php $str = '107_lab

mysql資料庫 count() 函式 sum() 函式用法區別

1、mysql 資料庫中 count() 函式是統計查詢結果中的行數,例如我們有下表 user_auth : 使用 count() 函式來查詢結果個數,使用如下查詢: mysql > se

tensorflow saver 儲存恢復指定 tensor

在實踐中經常會遇到這樣的情況: 1, 用簡單的模型預訓練引數 2, 把預訓練的引數匯入複雜的模型後訓練複雜的模型 這時就產生一個問題:            &nb

26、【支付模組開發】——支付寶回撥函式實現查詢使用者訂單狀態介面編寫

####1、支付寶回撥函式實現 我們在除錯支付寶沙箱環境的時候,支護寶會有一個回撥函式,也就是在支付成功之後,可以呼叫我們支付之後需要執行的相關方法,從而達到資料庫的資料和我們的操作相統一。 首先我們先在本地將回調函式編寫好~ 在OrderController類中新建我們的支付寶回撥函式

將圖片檔案以二進位制方式儲存恢復

/** * 將圖片轉換成二進位制 * * @return */ static String getImageBinary() { BASE64Encoder encoder = new sun.misc.BASE64Encoder(); //本地圖片 Fil

pickle模組以特殊的二進位制格式儲存恢復資料物件

先用pickle模組進行資料物件的儲存 1 import pickle 2 3 data1 = {'a': [1, 2, 3, 9], 4 'b': ('string', 'Unicode string'), 5 'c': ('True',

函式儲存過程聯合主鍵

建立批量插入資料 第一個命令是DELIMITER //,它與儲存過程語法無關。 DELIMITER語句將標準分隔符 - 分號(;)更改為://。 在這種情況下,分隔符從分號(;)更改為雙斜槓//。為什麼我們必須更改分隔符? 因為我們想將儲存過程作為整體傳遞給伺服器,而不是讓mysql工具一次解釋每個語句。

tensorflow模型的儲存恢復(tf.train.Saver()saver.restore()方法的運用)

注意: 在tensorflow中,一旦有涉及到檔案路徑的相關操作,請確保檔案路徑上所有目錄名為英文!!!!否則可能會出現奇怪的錯誤!! TensorFlow模型的儲存與恢復(使用tf.train.Saver()和saver.restore()): 首先我們需要建立一個用來儲存模型的物

sklearn模型的儲存恢復

在做模型訓練的時候,尤其是在訓練集上做交叉驗證,通常想要將模型儲存下來,然後放到獨立的測試集上測試,下面介紹的是Python中訓練模型的儲存和再使用。 scikit-learn已經有了模型持久化的操作,匯入joblib即可 from sklearn.externals import joblib

使用web_submit_data()web_custom_request()函式編寫HTTP介面測試指令碼實戰

最近在做HTTP協議介面壓測時,遇到一些編寫指令碼方面的問題,在這裡總結記錄下,以便以後溫習,也希望能幫助到和我有同樣困惑的朋友吧。 //實戰程式碼如下所示:Action() { lr_start_transaction("事物"); // 斷言內容:processcode":"0000","pro

Canvas繪圖狀態的儲存恢復(十)

首先,什麼是狀態,畫布上的路徑和點陣圖並不屬於狀態,應該把狀態看做2D渲染上下文屬性的描述;是不是很難理解!!! 那就別理解了,看以下的例子你能基本理解這個意思!!! 1、儲存繪圖狀態函式   context.save(); 儲存當前畫布狀態 程式碼使用:  

C++----類的成員變數成員函式在類的儲存方式

類的成員變數和成員函式在類的儲存方式為分開儲存。 即只有非靜態變數儲存在類中,其餘的所有成員均不在類中。 實驗如下: exp1: class Person1 { }; void test01() { cout << "size of (空類Person)