有時布局中的子控件不能完全顯示,或者我們希望子控件能暫時占據(jù)更多的顯示空間,然后我們需要使用另一個布局管理分割器。
當(dāng)鼠標(biāo)移動到子控件之間的間隔線時,鼠標(biāo)會變成以下形狀
3.3.1 QSplitter1 childrenCollapsible 子控件能否折疊?
2 handleWidth 分割線寬度。
3 opaqueResize 是否立即改變大小。
true-默認(rèn)情況下,當(dāng)拖動分割線時,控件隨分割線啟動。false-拖動分割線時,只有分割線移動,松開鼠標(biāo)后,控制器才能改變大小。4 orientation 分割器方向,水平或垂直。
3.3.2.1 saveState()和restoreState()
保持當(dāng)前狀態(tài)和恢復(fù)以前狀態(tài)。當(dāng)我們使用分割器時,許多控制器的大小會發(fā)生變化,當(dāng)我們想要恢復(fù)一定狀態(tài)時,我們可以使用這兩個函數(shù)。
當(dāng)您開發(fā)的軟件再次打開時,如果您想恢復(fù)到最后一個布局圖片,您也可以使用這兩個函數(shù)。我將在下面的例子中展示此功能。
3.3.2.2 sizes()和setSizes()
在分割器中獲取和設(shè)置每個控件的寬度或高度。
如果分割器是水平的,則每個控制器的寬度將從左到右設(shè)置。如果分割器是垂直的,則每個控制器的高度將從上到下設(shè)置。
列表中的額外值被忽略了。如果列表中的值太小,則結(jié)果不定義,但程序仍然很好。
分割器的整體尺寸不受影響。相反,控件中分布著任何額外/缺失的空間,根據(jù)尺寸的相對重量(伸縮因子)。
若*尺寸為0,則控件將不可見。
保留控件的尺寸策略。換句話說,小于控件的較小尺寸提示值將被提示值所取代。
3.3.3.1 控件的顯隱
當(dāng)隱藏一個控件時,它的空間將分配給其他控件。當(dāng)它再次顯示時,它將被恢復(fù)。
3.3.3.2 布局器與分割器的對比
在QSplitter不能直接添加QLayout是的,這是因為QSplitter繼承自QFrame的,而QLayout繼承自QObject和QLayoutItem是的,布局是一套算法,QSplitter是窗口控件,不能直接添加,只有布局才能添加子布局。
因為QSplitter是窗戶控制器,當(dāng)然可以用setLayout()或使QSplitter作為QLayout父類或使用addWidget()替代。
新建項目SpliterWidget,類名SpliterWidget,基類為QWidget。
拖入兩個QCheckBox,并且都勾選屬性checkable,checked
再拖入一個QTextEdit和QPushButton
spliterwidget.h
#ifndef SPLITERWIDGET_H#define SPLITERWIDGET_H#includespliterwidget.cpp
#include編譯操作程序,調(diào)整分割器大小,關(guān)閉窗口,再次打開程序,恢復(fù)分割器關(guān)閉前的狀態(tài)。
好了,今天就來說說分割器的內(nèi)容。下次見。