Qt 布局管理1

2021-09-13 03:25:27 字數 884 閱讀 9190

最近在學習qt的基礎知識。看了一些自定義qwidget外觀方法,當初步接觸一些qt布局的一些知識後感覺到很困惑。不知道各位博友有沒有這樣的困惑。

1.  對於qt的qwidget而言重要的就是互動。互動需要考慮兩種重要因素:外觀+行為。在qt中行為是由事件觸發的,當然qt又提供了訊號與槽機制來方便qwidget之間的互動。

2. qt的qwidget(2d)的描繪是利用qpainter來實現的。對於使用者而言,有幾種方法來自定義外觀(包括起始位置,高寬,背景,前景等等)。重寫paintevent利用qpainter來實現;利用qpalette和qstyle來更改外觀;利用qss(類似於css)來更改外觀。

3. 上述幾種方法解決了構建的外觀描繪,但是沒有解決構件的相對位置關係,視窗的拉伸與縮小。如果這些工作交由使用者來做是困難的。qt提供了幾種布局(水平,垂直,網格,棧,**,使用者自定義布局)來解決這些問題。解決這些問題就必須將構件的起始位置,高寬等外觀屬**由布局來處理,所以布局會忽視qwidget的起始位置,高寬。

4. 布局考慮的有

1. qwidget的最大(最小)寬/高。

在拉伸的過程中不能超過最大寬/高。在縮小的過程中不能超過最小的寬/高。

2. 空格填充。當達到最大寬/高時,布局將使用空格進行填充以使構建覆蓋整個視窗。使用setsizecontrinter能夠去除空格填充。當然對於某一方向,只要存在可拉伸的構件,就不會使用空格填充。

3. 伸縮比例。布局中的構件的伸縮比例。

4. margin

簡單例項

1 當視窗進行拉伸或縮小時,三個按鈕的大小和位置不變

Qt之布局管理 (1)基本布局管理

qt提供的布局類以及他們之間的繼承關係 如下圖 常用到的布局類有 qhboxlayout qvboxlayout qgridlayout三種,分別是水平排列布局 垂直排列布局 排列布局。常用的方法有addwidget 和addlayout addwidget 用於在布局中插入控制項,addlayou...

QT布局實踐1 布局雛形

一直以來對布局感覺get不到點,最近就花點時間來實踐一下,弄乙個純手動布局的介面。力求做到全適應。做乙個介面慢慢加東西把,大概是下面圖的樣子,紅色區域隨意伸縮,綠色區域也是,但是寬度有最大值和最小值。藍色和橙色是固定的高,只能進行左右伸縮。大概就是先在qhboxlayout1 中加入紅綠,qhbox...

Qt 布局管理器

布局管理器是qt提供的一種自動完成窗體布局的工具,減少我們的工作量並且很美觀!基本的布局管理器有四種 horizontal,vertical,grid,和form 布局管理器。這些在前面的例子都能看到是如何使用的。qt的幫助文件裡也有乙個專門講他們的例子 basic layouts qhboxlay...