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