第22課 布局管理器(一)

2021-08-17 04:40:25 字數 2416 閱讀 4085

1.1、

直接在

畫素級

指定各個元件的位置和大小

1.1.1、

void qwidget::move(int x, int y)

1.1.2、

void qwidget::resize(int x, int y)

1.2、

問題:元件的大小和位置

無法自適應父視窗的變化

2.1、

qt提供相關的類

對介面元件進行布局管理

2.1.1、

能夠

自動排列

視窗中的介面元件

2.1.2、

視窗變化後

自動更新介面元件的大小

2.2、

qlayout類

2.2.1、

qlayout是qt中布局管理器的

抽象基類

2.2.2、

通過

繼承qlayout

實現了

功能各異且互補

的布局管理器

2.2.3、

qt中可以根據需要

自定義布局管理器(一般不要自定義布局管理器)

2.2.4、

布局管理器

不是介面部件

而是介面部件的定位策略

2.3、

qboxlayout布局管理器

2.3.1、

以水平或者垂直的方式管理介面元件

2.4、布局管理器可以互相巢狀,形成更加複雜的布局形式

2.4.1、

布局巢狀

幾乎可以完成所有

常用的介面布局

2.4.2、

自定義布局類

可以達到

個性化介面布局

的效果

qlayoutmanaget.h

#ifndef widget_h

#define widget_h

#include

#include

class widget : public qwidget

; #endif // widget_h

qlayoutmanaget.cpp

#include "widget.h"

#include

#include

widget::widget(qwidget *parent)

: qwidget(parent), btn1(this), btn2(this), btn3(this), btn4(this)

void widget::qlayouttest()

widget::~widget()

main.cpp

#include "widget.h"

int main(int argc, char *argv)

3.1、

絕對定位

的布局方式

無法自適應視窗的變化

3.2、

qt提供相關的類對介面元件

進行布局管理

3.3、

qt預定義了

功能各異且互補

的布局管理器

3.4、

布局管理器

能夠互相巢狀

形成複雜的布局

第24課 布局管理器(三)

1.1 解決方法 1.1.1 絕對定位元件的座標和大小 1.1.2 巢狀qboxlayout 三個水平布局,乙個垂直布局 1.1.3 建立3x2的qgridlayout 首先用gridlayout來實現上面的布局 cpp檔案 include widget.h include include incl...

第25課 布局管理器(四)

1.1 棧式布局管理器 qstatckedlayout 概要 1.1.1 所有元件垂直於螢幕的方向上被管理 1.1.2 每次只有乙個元件會顯示在螢幕上 1.1.3 只有最頂層的元件會被最終顯示 1.2 棧式布局管理器的特點 1.2.1 元件大小一致且充滿父元件的顯示區 1.2.2 不能直接巢狀其它布...

布局管理器 網格袋布局管理器

網格袋布局管理器中的約束條件constrains中有如下字段需要設定 1 constrains.gridx和constrains.gridy 這兩個欄位僅用於指定元件的起始網格座標。2 constrains.gridwidth和constrains.gridheight 這兩個字段用於指定元件所佔網...