【Qt】Qt Creator中布局器详解
00. 目錄
文章目錄
- 00. 目錄
- 01. 概述
- 02. 開發(fā)環(huán)境
- 03. 布局器概述
- 04. 布局屬性設(shè)置
- 05. 彈簧條屬性和作用
- 06. 附錄
01. 概述
關(guān)于 Qt 布局管理,有專門的幫助文檔頁面Layout Management。本章的主要內(nèi)容就是介紹布局管理的知識(shí),Qt 設(shè)計(jì)師里面不僅有布局器的控件可以拖動(dòng)使用,還可以在窗體里面選擇控件,然后點(diǎn)擊設(shè)計(jì)師上面的工具按鈕自動(dòng)添加布局器。本節(jié)首先大致介紹一下 Qt 設(shè)計(jì)師里面關(guān)于布局器的操作界面。
Qt 的窗口主要內(nèi)容包括: 布局的樣式 , 基于UI界面設(shè)置布局 , 基于API設(shè)置布局。
Qt 窗口布局是指將多個(gè)子窗口按照某種排列方式將其全部展示到對(duì)應(yīng)的父窗口中的一種處理方式。在 Qt 中常用的布局樣式有三種,分別是:
02. 開發(fā)環(huán)境
Windows系統(tǒng):Windows10
Qt版本:Qt5.15或者Qt6
03. 布局器概述
在設(shè)計(jì)師和QtCreator中左邊列表,可以看到 Layouts 欄目里有四個(gè)布局器:
◆ 垂直布局器 QVBoxLayout:將內(nèi)部的控件按照垂直方向排布,一行一個(gè)。
◆ 水平布局器 QHBoxLayout:將內(nèi)部的控件按照水平方向排布,一列一個(gè)。
◆ 網(wǎng)格布局器 QGridLayout:按照多行、多列的網(wǎng)格排布內(nèi)部控件,單個(gè)控件可以占一個(gè)格子或者占據(jù)連續(xù)多個(gè)格子。
◆ 表單布局器 QFormLayout:Qt 設(shè)計(jì)師里把這個(gè)布局器稱為窗體布局器,窗體布局器這個(gè)叫法不準(zhǔn)。這個(gè)布局器就是對(duì)應(yīng)網(wǎng)頁設(shè)計(jì)的表單,通常用于接收用戶輸入。該布局器就如它的圖標(biāo)一樣,就是固定的兩列控 件,第一列通常是標(biāo)簽,第二列是輸入控件或含有輸入控件的布局器。
◆ Qt 另外還有一個(gè)堆棧布局器 QStackedLayout,通常用于容納多個(gè)子窗口布局,每次只顯示其中一個(gè)。這個(gè)布局器隱含在堆棧部件 QStackedWidget 內(nèi)部,一般直接用 QStackedWidget 就行了,不需要專門設(shè)置堆棧布局器。堆棧部件和堆棧布局器留到后面容器類控件的 章節(jié)講解。
與布局緊密關(guān)聯(lián)的是兩個(gè)空白條(或叫彈簧條):Horizontal Spacer 水平空白條和 Vertical Spacer 垂直空白條,空白條的作用就是填充無用的空隙,如果不希望看到控件拉伸后變丑,就可以塞一個(gè)空白條到布局器里面,布局器通常會(huì)優(yōu)先拉伸空白條。兩種空白條的類名都是 QSpacerItem,兩種空白條只是默認(rèn)的拉伸方向不一樣。
對(duì)界面進(jìn)行布局有兩種方式,第一種方式是預(yù)先設(shè)計(jì)好整體布局,先拖入布局器,后拖入功能控件到布局器里面,這種方式不太方便,因?yàn)槟X海里得提前做好布局規(guī)劃。第二 種方式才是是最常用的,先把所有功能控件拖入主界面,然后根據(jù)設(shè)置好的功能控件來決定如何進(jìn)行布局。Qt 的布局器中既可以添加普通功能控件,也可以添加其他布局器,所以布局器的使用是非常靈活的。界面里的控件,可以先按行排列布局,再按列排列布局;或者反過來,先排好列,再 排好行;當(dāng)然也可以直接用網(wǎng)格布局器或表單布局器。可以按實(shí)際控件的關(guān)系和用戶喜好進(jìn)行布局。
Qt 設(shè)計(jì)師和Qt Creator左邊列的四個(gè)布局器,其實(shí)不是經(jīng)常需要拖動(dòng)它們到主界面,更為常見的操作是選中控件,然后點(diǎn)擊設(shè)計(jì)師上面布局工具欄里的快捷按鈕實(shí)現(xiàn)布局,這些快捷按鈕的功能更豐 富,也更常用。布局工具欄有 8 個(gè)按鈕,下面依次介紹:
① 將選中控件添加到水平布局器排列。
② 將選中控件添加到垂直布局器排列。
③ 將選中控件添加到水平分裂器排列。
④ 將選中控件添加到垂直分裂器排列。
⑤ 將選中控件添加到網(wǎng)格布局器排布,行列的數(shù)目不限。
⑥ 將選中控件添加到表單布局器排布,該布局器固定為兩列控件。
⑦ 打破布局,即保留布局器內(nèi)部的控件和子布局,消除當(dāng)前選中的布局器。
⑧ 根據(jù)需要顯示的內(nèi)容,自動(dòng)調(diào)整控件或窗體的尺寸,相當(dāng)于調(diào)用一次 adjustSize() 函數(shù)。
【溫馨提示】
這里需要說明一下,布局器和空白條的基類其實(shí)都是 QLayoutItem,布局器僅用于輔助功能,幫助自動(dòng)調(diào)整窗口里的控件布局,并不是實(shí)體控件,沒有 show() 之類的顯示函數(shù),不能單獨(dú)存在,必須要有實(shí)體控件才能設(shè)置布局器。
我們之前介紹的都是實(shí)體控件,基類都是 QWidget ,都可以單獨(dú)存在,有 show() 之類的顯示函數(shù)。
分裂器具有布局功能,但分裂器的基類是 QFrame,分裂器是一個(gè)實(shí)體控件,分裂器不同于布局器。
04. 布局屬性設(shè)置
當(dāng)我們給窗口設(shè)置了布局之后,選中當(dāng)前窗口,就可以看到在其對(duì)應(yīng)的屬性窗口中除了有窗口屬性,還有一個(gè)布局屬性,下面給大家介紹一下這些屬性:
通過設(shè)置布局上下左右的邊距,或者是控件之間的距離也可以使界面看起來更加美觀。
05. 彈簧條屬性和作用
在進(jìn)行窗口布局的時(shí)候?yàn)榱俗尳缑婵雌饋砀用烙^,需要調(diào)整控件的位置,比如:靠左,靠右,居中,又或者我們需要調(diào)節(jié)兩個(gè)控件之間的距離,以上這些需求使用彈簧都是可以實(shí)現(xiàn)的。
關(guān)于彈簧的 sizeType 屬性,有很多選項(xiàng),一般常用的只有兩個(gè):
- Fixed: 得到一個(gè)固定大小的彈簧
- Expanding: 得到一個(gè)可伸縮的彈簧,默認(rèn)彈簧撐到最大
06. 附錄
6.1 Qt教程匯總
網(wǎng)址:https://dengjin.blog.csdn.net/article/details/115174639
總結(jié)
以上是生活随笔為你收集整理的【Qt】Qt Creator中布局器详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Qt】QBoxLayout类详解
- 下一篇: 【Qt】水平和垂直布局