qt入門 layout布局

2021-07-16 21:31:13 字數 2172 閱讀 3057

開發乙個圖形介面應用程式,介面的布局影響到介面的美觀。在設計乙個介面之前,應該考慮到開發的介面可能給不用的使用者使用,而使用者的螢幕大小、縱橫比例、解析度可能不同,介面還可能是可縮放的,程式應該可以適應這些變化。

前面的程式中都是使用setgeometry()方法定位控制項的位置,這個方法比較笨拙。試想如果控制項很多,布局這些控制項需要編寫大量的**。幸運的是,qt提供了更好的方法布局控制項。

常用的三種布局方法:

(1)使用水平布局類qhboxlayout;

(2)使用垂直布局類qvboxlayout;

(3)使用網格布局類qgridlayout。

這三種方法可以巢狀使用。

控制項在布局時可以先不指定父視窗,最後交由layout統一指定。

示例:[cpp]view plain

copy

#include 

#include 

#include 

#include 

#include 

int main(int argc, char *argv)    

編譯執行,介面如下:

在介面中,最外部是mainlayout,它的型別是垂直布局類qvboxlayout。它包含了兩個水平布局類qhboxlayout,分別是toplayout和bomlayout。

比起qhboxlayout和hvboxlayout, qgridlayout運用更加靈活。

qgridlayout的常用方法

(1)addwidget:

[cpp]view plain

copy

//放置乙個控制項到乙個單元格

void    addwidget ( qwidget * widget, int row, int column, qt::alignment alignment = 0 )  

//如果放置的控制項超出乙個單元格,則使用該方法

void    addwidget ( qwidget * widget, int fromrow, int fromcolumn, int rowspan, int columnspan, qt::alignment alignment = 0 )  

1)row:指放置控制項的網格行號(行號從0開始);

2)colum:指放置控制項的網格列號(從0開始);

3)alignment:對齊方式。

4)fromrow:指放置控制項的起始網格行號;

5)fromcolumn:指放置控制項的起始網格列號;

6)rowspan:指放置控制項佔多少行;

7)columnspan:指放置控制項佔多少列。

(2)addlayout

[cpp]view plain

copy

void    addlayout ( qlayout * layout, int row, int column, qt::alignment alignment = 0 )  

void    addlayout ( qlayout * layout, int row, int column, int rowspan, int columnspan, qt::alignment alignment = 0 )  

引數與addwidget類似。

(3)setspacing

[cpp]view plain

copy

void qgridlayout::setspacing ( int spacing )  

設定控制項水平和垂直之間的間隔。

示例:[cpp]view plain

copy

#include 

#include 

#include 

#include 

#include 

#include 

int main(int argc, char *argv)    

編譯執行,介面如圖:

Qt入門 layout布局

開發乙個圖形介面應用程式,介面的布局影響到介面的美觀。在設計乙個介面之前,應該考慮到開發的介面可能給不用的使用者使用,而使用者的螢幕大小 縱橫比例 解析度可能不同,介面還可能是可縮放的,程式應該可以適應這些變化。前面的程式中都是使用setgeometry 方法定位控制項的位置,這個方法比較笨拙。試想...

Qt入門 layout布局

開發乙個圖形介面應用程式,介面的布局影響到介面的美觀。在設計乙個介面之前,應該考慮到開發的介面可能給不用的使用者使用,而使用者的螢幕大小 縱橫比例 解析度可能不同,介面還可能是可縮放的,程式應該可以適應這些變化。前面的程式中都是使用setgeometry 方法定位控制項的位置,這個方法比較笨拙。試想...

QT中layout的布局

開發乙個圖形介面應用程式,介面的布局影響到介面的美觀。在設計乙個介面之前,應該考慮到開發的介面可能給不用的使用者使用,而使用者的螢幕大小 縱橫比例 解析度可能不同,介面還可能是可縮放的,程式應該可以適應這些變化。前面的程式中都是使用setgeometry 方法定位控制項的位置,這個方法比較笨拙。試想...