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