日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Qt】QBoxLayout类详解

發(fā)布時間:2024/4/24 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Qt】QBoxLayout类详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 概述
    • 02. 公有成員方法
    • 03. 常用成員方法介紹
    • 04. 預(yù)留
    • 05. 預(yù)留
    • 06. 附錄

01. 概述

QBoxLayout類將子窗口控件水平或垂直排列。

QBoxLayout占用它獲取的空間(從其父布局或從parentWidget()),將其劃分為一行框,并使每個托管窗口小部件填充一個框內(nèi)。

如果QBoxLayout的方向是Qt :: Horizontal,則將這些框以適當(dāng)?shù)拇笮》胖迷谝恍兄小C總€小部件(或其他框)將至少獲得其最小尺寸,并且至多獲得其最大尺寸。任何多余的空間都會根據(jù)拉伸因子進行共享(有關(guān)更多信息,請參見下文)。

如果QBoxLayout的方向是Qt :: Vertical,則將這些框放置在一列中,并再次使用適當(dāng)?shù)拇笮 ?/p>

創(chuàng)建QBoxLayout的最簡單方法是使用便捷類之一,例如QHBoxLayout(用于Qt :: HorizontalBox)或QVBoxLayout(用于Qt :: VerticalBox)。您還可以直接使用QBoxLayout構(gòu)造函數(shù),將其方向指定為LeftToRight,RightToLeft,TopToBottom或BottomToTop。

如果QBoxLayout不是頂級布局(即,它不管理小部件的所有區(qū)域和子級),則必須先將其添加到其父級布局中,然后才能對其進行任何操作。添加布局的通常方法是調(diào)用parentLayout-> addLayout()。

完成此操作后,可以使用以下四個函數(shù)之一將框添加到QBoxLayout中:

  • addWidget()將小部件添加到QBoxLayout并設(shè)置小部件的拉伸因子。(拉伸因子沿著Box的行。)
  • addSpacing()創(chuàng)建一個空的Box;這是您用來創(chuàng)建美觀且寬敞的對話框的功能之一。有關(guān)設(shè)置邊距的方法,請參見下文。
  • addStretch()創(chuàng)建一個空的,可拉伸的框。
  • addLayout()將包含另一個QLayout的框添加到該行,并設(shè)置該布局的拉伸因子。

使用insertWidget(),insertSpacing(),insertStretch()或insertLayout()在方框中的指定位置插入一個框。

QBoxLayout還包括兩個邊距寬度:

  • setContentsMargins()設(shè)置小部件每一側(cè)的外邊框的寬度。這是沿著QBoxLayout的四個邊中的每個保留空間的寬度。
  • setSpacing()設(shè)置相鄰框之間的寬度。(您可以使用addSpacing()在特定位置獲得更多空間。)

樣式提供了頁邊距默認值。大多數(shù)Qt樣式指定的默認邊距對于子窗口小部件為9,對于Windows為11。間距默認與頂層布局的邊距寬度相同,或與父布局相同。

要從布局中刪除小部件,請調(diào)用removeWidget()。在小部件上調(diào)用QWidget :: hide()還可以有效地從布局中刪除該小部件,直到調(diào)用QWidget :: show()為止。

由于它們方便的構(gòu)造函數(shù),您幾乎總是要使用QVBoxLayout和QHBoxLayout而不是QBoxLayout。

02. 公有成員方法

03. 常用成員方法介紹

水平布局器 QHBoxLayout 和垂直布局器 QVBoxLayout 的基類都是 QBoxLayout,只是二者排列方向不同。水平和垂直布局器的主要功能函數(shù)都位于基類 QBoxLayout 里面,我們這里專門介紹一下這個基類的功能。

QBoxLayout 構(gòu)造函數(shù)和 setDirection() 都可以指定布局器的方向:

QBoxLayout(Direction dir, QWidget * parent = 0) void setDirection(Direction direction)QBoxLayout 布局器的方向 QBoxLayout::Direction 枚舉不僅可以指定水平和垂直,還能指定反方向排列: 枚舉常量數(shù)值描述
QBoxLayout::LeftToRight0水平布局,從左到右排列
QBoxLayout::RightToLeft1水平布局,從右到左排列
QBoxLayout::TopToBottom2垂直布局,從上到下排列
QBoxLayout::BottomToTop3垂直布局,從下到上排列

水平布局器 QHBoxLayout 和垂直布局器 QVBoxLayout 默認是其中的兩種:QBoxLayout::LeftToRight 和 QBoxLayout::TopToBottom 。

布局器是一定要往里面添加控件才有用,添加控件的函數(shù)如下: void addWidget(QWidget * widget, int stretch = 0, Qt::Alignment alignment = 0) void insertWidget(int index, QWidget * widget, int stretch = 0, Qt::Alignment alignment = 0) widget 就是要添加的控件指針,stretch 是伸展因子(到 6.5 節(jié)再講這個,本節(jié)先不管),伸展因子越大, 窗口變大時拉伸越 多,alignment 一般不需要指定,用默認的即可。第一個 addWidget() 是將控件添加到 布局里面的控件列表末尾,第二個 insertWidget() 是將控件插入到布局里控件列表序號為 index 的位置。對于布局器里的各個控件,可以設(shè)置相鄰控件之間默認的間距: void setSpacing(int spacing) spacing 就是間隔的像素點數(shù)目。如果不設(shè)置 spacing,那么布局器會根據(jù)默認策略決定如何添加控件之間的間隙,一般是根據(jù)父窗口 或父布局器的策略來 定。布局器中不僅可以添加控件,還可以直接添加其他布局: void addLayout(QLayout * layout, int stretch = 0) void insertLayout(int index, QLayout * layout, int stretch = 0) 參數(shù)里添加的 layout 布局器會作為一個整體,與父布局器里其他控件一塊排布,stretch 也是伸展因子。對于 QBoxLayout、QHBoxLayout 、QVBoxLayout 布局器,通常不需要手動新建空白條對象,因為它們自帶相關(guān)函數(shù): void QBoxLayout::?addSpacing(int size) //添加 size 固定尺寸空白條到布局器 void QBoxLayout::?addStretch(int stretch = 0) //添加自動拉伸的空白條到布局器 void QBoxLayout::?insertSpacing(int index, int size) //插入 size 固定尺寸空白條到布局器 void QBoxLayout::?insertStretch(int index, int stretch = 0) //插入自動拉伸的空白條到布局器 對于 add* 添加函數(shù),因為布局器內(nèi)部通常有多個控件,添加函數(shù)是把空白條添加到最后。 而 insert* 插入函數(shù),是把空白條插入到指定序號 index 的位置。如果要添加自己創(chuàng)建的空白條對象,也是可行的: void addSpacerItem(QSpacerItem * spacerItem) void insertSpacerItem(int index, QSpacerItem * spacerItem) 另外,還可以自己從 QLayoutItem 派生新的布局器條目,對布局器條目進行自定義,這些新的布局器條目可以用如下函數(shù)添加: virtual void addItem(QLayoutItem * item) void insertItem(int index, QLayoutItem * item)講了如何添加控件和其他布局器,當(dāng)然也可以計算布局器里面的條目計數(shù): virtual int count() const 如果要獲得布局器中某個序號的條目: virtual QLayoutItem * itemAt(int index) const 如果要刪除布局器中某個序號的條目: virtual QLayoutItem * takeAt(int index) 布局器中無論是填充普通控件還是其他布局器,每個條目都是用 QLayoutItem 封裝的,對于獲得的 QLayoutItem 指針(非空指針), 如果要獲取里面封裝的控件、布局器或空白條,使用如下函數(shù): QWidget * QLayoutItem::?widget() QLayout * QLayoutItem::?layout() QSpacerItem * QLayoutItem::?spacerItem() 注意判斷以上函數(shù)的返回值是否為 NULL 指針,如果是非空指針才能進行其他操作。

04. 預(yù)留

05. 預(yù)留

06. 附錄

6.1 Qt教程匯總
網(wǎng)址:https://dengjin.blog.csdn.net/article/details/115174639

總結(jié)

以上是生活随笔為你收集整理的【Qt】QBoxLayout类详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。