QT5入門之29 布局管理器

2021-07-06 08:40:21 字數 1908 閱讀 8655

1.布局(layouts)

窗體上的每個控制項都需要有乙個合適的尺寸和位置,從而設計出合理、美觀的介面。

qt中有三種方式對窗體上的控制項進行布局管理,分別是:絕對布局、手工布局和qt布局管理器。

2.絕對布局

絕對布局很簡單,控制項的位置是固定的,控制項不會隨著視窗大小的變化而變化。

由於控制項大小不變,當改變控制項標題,文字可能顯示不全。

3.手工布局

手工布局中控制項的位置是固定的,但是控制項的尺寸會隨著視窗的大小變化而變化,可以通過重寫窗體控制項的resizeevent()實現對子控制項的大小的設定。setgeometry

管理窗體上控制項最簡單的方法就是使用qt的布局管理器。

4.布局管理器可以使控制項的大小隨著視窗大小的改變而改變。

qt creator有4種布局元件,qhboxlayout水平布局、qvboxlayout垂直布局、qgridlayout網格布局、qstacklayout 分組布局。

水平布局:控制項按水平方向排列。

垂直布局:控制項按垂直方向排列,寬度隨垂直布局管理器改變而改變,但是控制項高度不變。

grid布局管理器可以以網格的形式,將它所管理的部件以一定的矩陣形式排列。類似於html 的table。

可以先拖布局元件,再拖控制項;也可以先拖控制項。

如果對當前布局不滿意,可以將布局管理器整體選中,單擊上面工具欄上的「break layout」按鈕,便可取消布局管理器。

5.間隔器(spacers)是用來填補空白的控制項,在布局管理器中配合使用。

例項:

hboxlayout ,button1 23均是成員變數。

//建立橫向布局

hboxlayout =

new qhboxlayout();

button1 =

new qpushbutton("按鈕1");

button2 =

new qpushbutton("按鈕2");

button3 =

new qpushbutton("按鈕3");

//向布局中新增控制項

hboxlayout->addwidget(button1);

hboxlayout->addwidget(button2);

hboxlayout->addwidget(button3);

//間隔

hboxlayout->setspacing(60);

//例項qwidget

widget =

new qwidget();

//繫結布局

widget->setlayout(hboxlayout);

//建立縱向布局

gridlayout =

new qgridlayout();

button1 =

new qpushbutton("按鈕1");

button2 =

new qpushbutton("按鈕2");

button3 =

new qpushbutton("按鈕3");

//向布局中新增控制項

//0,0,1,1 行 列 行間距 列間距

gridlayout->addwidget(button1,0,0,1,1);

gridlayout->addwidget(button2,0,1,1,1);

gridlayout->addwidget(button3,1,0,1,1);

//例項qwidget

widget =

new qwidget();

//繫結布局

widget->setlayout(gridlayout);

//繫結介面

this->setcentralwidget(widget);

qt布局管理器入門

1.qt布局管理器的簡介 qtdesigner 是乙個視覺化的基於qt的使用者介面設計工具。用來生成 ui 定義檔案,而不考慮具體的語言。很好使用,掌握其中的布局管理是學習好qtdesigner的關鍵。布局管理器 在建立的視窗中,為了方便地管理其中的控制項,而誕生了布局管理器。將各種控制項按照實際需...

qt之布局管理器

我們載入控制項的時候,我們可以用布局類來指定父視窗 然後widget可以直接載入布局類 qt的布局類 水平布局 qhboxlayout 垂直布局 qvboxlayout 柵格布局 qfromlayout 手動布局 常用介面 addwidget qwieget int row,int colunum,...

Qt 布局管理器

布局管理器是qt提供的一種自動完成窗體布局的工具,減少我們的工作量並且很美觀!基本的布局管理器有四種 horizontal,vertical,grid,和form 布局管理器。這些在前面的例子都能看到是如何使用的。qt的幫助文件裡也有乙個專門講他們的例子 basic layouts qhboxlay...