Qt深入淺出(四)布局管理器

2021-08-15 18:11:08 字數 2835 閱讀 7371

布局管理器可以讓程式設計師擺脫繁瑣的視窗位置大小設定工作。並且布局管理器可以依據視窗大小變更布局控制項的位置大小。

​ 布局管理器基類為qlayout繼承至qobject 和qlayoutitem,它是乙個抽象基類,需要被進一步繼承才能使用。它的派生類有qhboxlayout、qvboxlayout和qgridlayout。

​ 每個視窗物件都可以設定乙個布局管理器,來管理所有它的子視窗,由於布局管理器繼承至qobject,那麼布局管理的記憶體釋放也可以託管給視窗物件,而所有新增到布局管理器中的視窗物件,它們的記憶體釋放又都託管給這個布局管理器。

​ 通過視窗物件的setlayout來設定布局管理器,如果事先已經設定了乙個布局管理器,那麼會替換掉這個布局管理器。

void

qwidget::setlayout(qlayout

*layout)

​ 你可以簡單的理解布局管理器為視窗的一部分。

​ qhboxlayout、qvboxlayout它們都繼承至qboxlayout,qboxlayout又繼承至qlayout。

​ qhboxlayout是水平布局管理器,可以將所有託管給它的視窗物件按照水平方向進行布局。

​ qvboxlayout是垂直布局管理器,可以將所有託管給它的視窗物件按照垂直方向進行布局。

void

qboxlayout::addwidget(qwidget

*widget, int

stretch

=0, qt::alignment

alignment

=qt::alignment())

/*widget

視窗物件

stretch 伸縮係數

alignment 對齊方式qt::aligment是qt中的乙個列舉型別,具體請檢視幫助文件

*/

void

qboxlayout::setstretch(int

index,int

stretch)

void

qboxlayout::addstretch(int

stretch

=0)

void

qboxlayout::setspacing(int

spacing)

void

qboxlayout::addspacing(int

size);

void

qlayout::setmargin(int

margin)

bool

qlayout::setalignment(qwidget

*w, qt::alignment

alignment)

void

qgridlayout::setrowstretch(int

row,int

stretch)

void

qgridlayout::setcolumnstretch(int

column,int

stretch)

void

qgridlayout::setspacing(int

spacing)

void

qgridlayout::setrowminimumheight(int

row, int

minsize)

void

qgridlayout::setcolumnminimumwidth(int

column, int

minsize)

bool

qlayout::setalignment(qwidget

*w, qt::alignment

alignment)

​ 有些時候,我們需要實現複雜的布局效果,單單使用一種布局管理器,無法完成,那麼這個時候需要巢狀使用布局管理器。即布局管理器中新增布局管理器。

void

qboxlayout::addlayout(qlayout

*layout, int

stretch

=0)

void

qgridlayout::addlayout(qlayout

*layout, int

row, int

column, qt::alignment

alignment

=qt::alignment())

​ 使用布局管理器之後,如果想在建構函式中獲取視窗大小,這個時候就不能使用size函式來獲取,需要通過sizehint函式來獲取。

​ 這是因為,size獲取的是視窗實際大小,一般通過resize來設定,不設定的時候也有預設大小。

​ 然而如果設定了布局管理器,那麼視窗在顯示的時候還會按照特定的布局策略重置視窗大小,而sizehint獲取到的是重置後的視窗大小。函式原型如下:

virtual

qsize

sizehint() const

注意:如果沒有使用布局管理器,那麼sizehint返回的無效的值

深入淺出Mysql(四)

大批量插入資料優化 1 對應myisam型別的表,可以通過以下方式快速的匯入大量資料 alter table tablname disable keys loading the data alter table tablname enable keys 這兩個命令用來開啟或者關閉myisam表非唯一...

Qt深入淺出(二)Qt編譯機制

使用qmake.exe 工具解析.pro檔案,然後生成makefile,通過makefile 32bit.exe解析makefile檔案來編譯,可通過檢視qt creator顯示的編譯資訊。先執行qmake命令解析class1 1.pro檔案,生成makefile.debug檔案 c qt qt5....

Qt深入淺出(二)Qt編譯機制

使用qmake.exe 工具解析.pro檔案,然後生成makefile,通過makefile 32bit.exe解析makefile檔案來編譯,可通過檢視qt creator顯示的編譯資訊。先執行qmake命令解析class1 1.pro檔案,生成makefile.debug檔案 c qt qt5....