Qt學習08——佈局管理綜合應用

實例:用戶信息管理窗口

一、實例描述

最外層採用QSplitter分割窗口左右部分,左側爲QListWidget,右側爲QStackedWidget和QPushButton。QStackedWidget共有3個頁面,通過信號-槽與QListWidget的item對應。QStackedWidget每個頁面均採用QGridLayout進行佈局。

佈局框架大致如圖所示:


二、實現過程

1、QListWidget

新建QListWidget控件,並添加3個項目;



2、QPushButton佈局

新建2個按鈕並使用QHLayout水平佈局,用Spacer調整位置。調整位置時,使用layoutStretch控制佈局比例。



3、QStackedWidget佈局

新建QStackedWidget,與按鈕佈局組建QVLayout垂直佈局,同樣使用使用layoutStretch控制佈局比例。



4、QSplitter分割器

Qt中並沒有直接給出QSplitter控件,但是可以在佈局工具欄中找到。同時選中listWidget和verticalLayout,使用分裂期水平佈局即可。


測試一下效果:


關於QSplitter在Qt Creator中詳細的使用方法,還可以參考QSplitter的使用和設置

5、QStackedWidget頁面內佈局

添加每個頁面內的控件,此爲page1內的控件:


在page1頁面下,右鍵stackedWidget對象,選擇柵格佈局(GridLayout),適當調整調整控件大小和位置、橫縱佈局比例(layoutColumnStretch、layoutRowStretch),在必要的地方使用spacer輔助調整:


按照這個方法完成stackedWidget的其他頁面。

6、窗體佈局調整

由於splitter沒有設定QListWidget和右側QVLayout的比例,需要在splitter外再加一層gridLayout來控制窗體佈局比例。


7、添加信號-槽

使用Designer的信號-槽編輯器就可以完成簡單的信號-槽添加。將listWidget的currentRowChanged(int)信號與stackedWidget的setCurrentIndex(int)槽函數對應,即可實現當listWidget切換列項目時,stackedWindow切換到對應編號的頁面。


三、總結

整個layout層次如下:


附上.ui文件的xml代碼:

<?xml version="1.0" encoding="UTF-8"?>
userLayout00800400userLayoutQt::Horizontal4020修改關閉Qt::ElideRight基本信息AlignCenter聯繫方式AlignCenter詳細資料AlignCenter0Qt::Horizontal4020男女其他個人說明:Qt::AlignCenterdescTEdit姓  名:nameLEdit頭    像:Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenterpicGraph性  別:部  門:deptTEdit用戶名:userLEdit年  齡:ageLEditfalse備  注:Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter更新電子郵件:Qt::Horizontal4020聯繫地址:郵政編碼:個人電話:接收留言辦公電話:Qt::Vertical2040國家/地區:true中國美國日本英國德國省     份:true城     市:true個人說明:listWidgetlayoutWidgethorizontalSpacerlayoutWidget_2stackedWidgetlistWidgetcurrentRowChanged(int)stackedWidgetsetCurrentIndex(int)99199500181

運行效果:



代碼打包下載:

碼雲:https://git.oschina.net/shawn06/qt_study_userinfomanager.git

發佈了49 篇原創文章 · 獲贊 41 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章