QSplitter 控制項使用時要注意的問題

2021-06-12 14:32:13 字數 890 閱讀 6289

當使用qsplitter時,如果是多個qsplitter巢狀使用(如下圖)

就很容易出現錯誤。通常是「記憶體不能為read」 (如下圖)

**如下:(錯誤的用法)

出現錯誤的原因為,如果先建立的是父qsplitter,然後建立的子qsplitter,則沒有錯誤。

因為當關閉窗體是,呼叫析構函式的順是:子,父。

但是如果是先建立的子qsplitter,然後建立的父qsplitter,那麼在關閉窗體時,

先呼叫的是父qsplitter的析構函式,然後才呼叫的子qsplitter的析構函式。

這樣就會出錯。個人猜測試由於在父qsplitter的析構函式中已經自動呼叫了子qsplitter的析構函式,

當再次呼叫子qsplitter的析構函式時,就會找不到物件,導致出錯。

這就要求我們一定要按順序定義qsplitter,這很難做到。

相反,如果我們自己決定呼叫析構函式的順序就不會出錯了。

因此,正確的使用qsplitter的方法是在堆上建立物件,然後自行delete。

正確用法如下:

ps:由於呼叫父splitter會自動刪除其內部的所有控制項,所以也可以直接delete父qsplitter。

這樣連裡面的其他控制項也會刪除了。但是切記,一定要用new。

ps:類似的布局類控制項如qscrollarea也要注意相同的問題。

Qsplitter的使用方法

首先在介面上拖入兩個控制項,如qpushbutton1和qpishbutton2.然後選中兩個控制項右鍵,選擇選單欄的布局選項會出現子選單可以根據需求選擇垂直或者水平 器布局。如下 示例 ui splitter setstretchfactor 1 80 setstretchfactor函式用來設定...

解決C 控制項在IE中使用時的閃爍問題

以下 為引用,從網上找的。謝謝原作者。最近對 作了一些優化,試驗後效果還可以,但是發現介面會閃爍,具體是treeview控制項會閃爍,語言為c ide為vs2005。在查閱一些資料,使用了一些基本技術後 如開啟雙緩衝 發現沒什麼效果。於是使用profiler工具,查詢出瓶頸在於每次更新完介面的end...

不認識的人問你手機如何使用時千萬要躲

廣州新近出現殘忍的 電棍黨 專襲擊單身行人!廣州一名公安向pc 電腦與電信 記者證實,近日有多人反映,他們在路上等車或從酒吧出來時,遭電棍襲擊,電暈後即被搜掠去身上所有財物。接到線人報料後,pc 電腦與電信 記者立即出擊採訪,並成功接觸到其中一名受害者,追查出電棍黨竟是在旅館長期租賃房子,非法販賣電...