Qt之表單布局(QFormLayout)

2021-09-23 14:36:05 字數 2524 閱讀 4845

qformlayout管理輸入型控制項和關聯的標籤組成的那些form表單。

qformlayout是乙個方便的布局類,其中的控制項以兩列的形式被布局在表單中。左列包括標籤,右列包含輸入控制項,例如:qlineedit、qspinbox等。

我們可以通過addrow(const qstring &labeltext, qwidget *field)來建立乙個帶有給定文字的qlabel及qwidget控制項行,它們可以自動的設定為夥伴關係。

qformlayout *playout =

new qformlayout();

playout->addrow(qstringliteral("使用者名稱:"), puserlineedit);

playout->addrow(qstringliteral("密碼:"), ppasswordlineedit);

playout->addrow(qstringliteral("驗證碼:"), pverifylineedit);

playout->setspacing(10);

playout->setmargin(10);

setlayout(playout);

使用qgridlayout格柵布局編寫的比較:

qlabel *pusernamelabel =

new qlabel(this);

qlabel *ppasswordlabel =

new qlabel(this);

qlabel *pverifylabel =

new qlabel(this);

pusernamelabel->settext(qstringliteral("使用者名稱:"));

ppasswordlabel->settext(qstringliteral("密碼:"));

pverifylabel->settext(qstringliteral("驗證碼:"));

qgridlayout *playout =

new qgridlayout();

playout->addwidget(pusernamelabel, 0, 0);

playout->addwidget(puserlineedit, 0, 1);

playout->addwidget(ppasswordlabel, 1, 0);

playout->addwidget(ppasswordlineedit, 1, 1);

playout->addwidget(pverifylabel, 2, 0);

playout->addwidget(pverifylineedit, 2, 1);

playout->setspacing(10);

playout->setmargin(10);

setlayout(playout);

很顯然,功能可以實現,但是**量大了很多。

設定換行策略

控制表單行的顯示策略。內容值

描述效果

qformlayout::dontwraprows

0輸入框始終在標籤旁邊

1標籤有足夠的空間適應,如果最小大小比可用空間大,輸入框會被換到下一行

2輸入框始終在標籤下邊

qformlayout::itemrole列舉:

指定一排控制項的型別內容值

描述qformlayout::labelrole0標籤

qformlayout::fieldrole

1輸入框

qformlayout::spanningrole

2跨越標籤和輸入框的控制項

例如:

//playout->addrow(pusernamelabel, puserlineedit);

playout->setwidget(0, qformlayout::labelrole, pusernamelabel);

playout->setwidget(0, qformlayout::fieldrole, puserlineedit);

當要設計的介面是一種類似於兩列和若干行組成的形式時,使用qformlayout(表單布局)要比qgridlayout(柵格布局)更為方便些。

當介面元素較為複雜時(多行多列),應毫不猶豫的盡量使用柵格布局,而不是使用水平和垂直布局的組合或者巢狀的形式,因為在多數情況下,後者往往會使「局勢」更加複雜而難以控制。柵格布局賦予了介面設計器更大的自由度來排列組合介面元素,而僅僅帶來了微小的複雜度開銷。

Qt之表單布局(QFormLayout)

qformlayout管理輸入型控制項和關聯的標籤組成的那些form表單。qformlayout是乙個方便的布局類,其中的控制項以兩列的形式被布局在表單中。左列包括標籤,右列包含輸入控制項,例如 qlineedit qspinbox等。我們可以通過addrow const qstring label...

Qt之表單布局(QFormLayout)

qformlayout管理輸入型控制項和關聯的標籤組成的那些form表單。qformlayout是乙個方便的布局類,其中的控制項以兩列的形式被布局在表單中。左列包括標籤,右列包含輸入控制項,例如 qlineedit qspinbox等。我們可以通過addrow const qstring label...

Qt學習之表單 QTableWidget

1 建立乙個表單 qtablewidget table new qtablewidget 行數,列數,this 2 設定列寬 例如我要建立的表單為5列 table setcolumnwidth 0,180 table setcolumnwidth 1,200 table setcolumnwidth...