Qt Creator 窗體控制元件自適應視窗大小布局
常見的軟體視窗大小改變(最大化、手動改變時)需要視窗的部件能夠自適應佈局,而在Qt的應用程式介面設計中,對於像我一樣的初學者如何實現視窗自適應調整還是要繞點彎路的。網上百度了很多,多數說的很含糊,還有很多是用程式實現的,既然已經有Qt Creator那麼高整合度的工具了,我還是傾向於直接在Qt Creator中通過視覺化配置的方式完成,一是所見即所得,而是效率要高不少。
推薦閱讀:
Qt中如果想實現窗體內空間隨著窗體大小調整,必須使用佈局管理,常用的佈局管理有QHBoxLayout、QVBoxLayout、QGridLayout,空的地方使用spacer控制元件進行填充,因此首先將窗體空間使用佈局管理典型應用如下圖所示。
我這裡使用QGridLayout,按住Ctrl多選需要佈局的窗體控制元件,右鍵-佈局-柵格化局,根據需要進行調整。
要想是控制元件根據窗體進行調整,最為重要的一點就是設定視窗部件的大小策略,各控制元件均有這一項設定,如下圖所示。
這部分具體的引數解釋摘錄如下:
結合控制元件的SizePolicy屬性,來控制佈局管理中的控制元件的尺寸自適應方式。
控制元件的sizePolicy說明控制元件在佈局管理中的縮放方式。Qt提供的控制元件都有一個合理的預設sizePolicy,但是這個預設值有時不能適合所有的佈局,開發人員經常需要改變窗體上的某些控制元件的sizePolicy。一個QSizePolicy的所有變數對水平方向和垂直方向都適用。下面列舉了一些最長用的值:
A. Fixed:控制元件不能放大或者縮小,控制元件的大小就是它的sizeHint。
B. Minimum:控制元件的sizeHint為控制元件的最小尺寸。控制元件不能小於這個sizeHint,但是可以
放大。
C. Maximum:控制元件的sizeHint為控制元件的最大尺寸,控制元件不能放大,但是可以縮小到它的最小
的允許尺寸。
D. Preferred:控制元件的sizeHint是它的sizeHint,但是可以放大或者縮小
E. Expandint:控制元件可以自行增大或者縮小
注:sizeHint(佈局管理中的控制元件預設尺寸,如果控制元件不在佈局管理中就為無效的值)
所以對於需要根據視窗大小對應改變的部件我這裡就設定為Expandint。
在部件大小策略的下方還有伸縮因子的設定,用於設定視窗部件在伸縮過程中的對應比例,這部分可以自行摸索。
要想實現隨著視窗自動縮放,很重要的一點是需要設定頂級佈局,對於一個視窗來說,只能有一個佈局成為它的頂級佈局,而剛剛的設定還只是控制元件之間的佈局,因此需要放入窗體佈局中進行佈局。
在沒有控制元件的地方右擊-佈局-在狀體佈局中佈局,如下圖所示:
相關推薦
Qt Creator 窗體控制元件自適應視窗大小布局
常見的軟體視窗大小改變(最大化、手動改變時)需要視窗的部件能夠自適應佈局,而在Qt的應用程式介面設計中,對於像我一樣的初學者如何實現視窗自適應調整還是要繞點彎路的。網上百度了很多,多數說的很含糊,還有很多是用程式實現的,既然已經有Qt Creator那麼高整合度的工具了,我還是傾向於直接在Qt Crea
利用WPF建立自適應視窗大小布局的WinForm視窗
編寫WinForm程式時,都會碰到一個問題。就是WinForm視窗在不同解析度下的大小問題。舉例說明,你編寫的WinForm視窗在1024×768下是合適、勻稱的。不過,如果使用者的計算機的解析度為1400×900時,你的WinForm視窗就顯得偏小,其中的字型和控制元件
Winfon 窗體控制元件自適應
由於公司的業務調整,最近不僅開發bs,還有不熟悉的cs,人手也不足,專案還多,對於cs來說,算是小白,雖然是一個人,也是硬著頭皮寫,拖拽控制元件,自定義控制元件。一個專案下來,對cs有了很深的認識,這裡好好感謝下老大以及身邊的同事,總是在我絞盡腦汁也沒想出好的解決方案
Qt中窗體控制元件按照比例縮放,自適應視窗大小進行佈局
最近在做本科畢設,用到了Qt,無奈本人實在是太過於小白了,很多東西都進行了很久的探索,比如今天說到的窗體控制元件佈局...一把辛酸淚 首先就是建立一個GUI檔案,然後進行UI設計,這裡就只需要從左邊進行拖拽,這個很easy啦... 然後對其進行佈局
【轉】WPF自定義控制元件與樣式(13)-自定義窗體Window & 自適應內容大小訊息框MessageBox
一.前言 申明:WPF自定義控制元件與樣式是一個系列文章,前後是有些關聯的,但大多是按照由簡到繁的順序逐步釋出的等。 本文主要內容: 自定義Window窗體樣式; 基於自定義窗體實現自定義MessageBox訊息提示框; 二.自定義Window窗體樣式 自定義的Window
讓控制元件隨窗體大小變化而變化~WinForms控制元件自適應窗體大小
簡單的來說就是監控,定位+保持比例。 例如介面分為左右下三部分,其中下部分最好解決。使用Dock屬性直接定位到Bottom。難點就是上面的左右兩塊。 我的做法是:外面套一層,然後分割為左右兩部分。這裡採用TableLayoutPanel為例。將TableLayoutP
onresize()調整瀏覽器視窗時,使圖片等控制元件自適應地變化大小
今天學習JS時,按照教程裡如下程式碼實現“改變瀏覽器視窗的圖片自適應問題”,但沒有達到想要的效果,圖片在改變瀏覽器視窗的時候越變越大,重新整理頁面後又恢復原大小。 height = (document.body.clientHeight-100)*0.9; document
PyQt5 QTableWidget(表單控制元件)自適應視窗大小、欄位大小調整及佈局(一)
目錄 前言 前言 還好,我有C++ Qt Help(幫助文件)O(∩_∩)O哈哈~ 本文旨在介紹QTableWidget(表單控制元件)的自適應視窗大小、欄位大小調整及佈局。 用QtDesigner設計UI 1. 先用QtDe
unity 解析度自適應方法及ScrollView子控制元件自適應問題
專案所需,unity需要自適應解析度,尤其需要適應全屏模式。 設定方法: 設定Canvas 屬性,如下圖 主要設定的屬性包括: Render Mode 設定為 Screen Space Canvase Scaler 的UI Scale Mode 為 Scale with Screen
qml : qml控制元件自適應;
import QtQuick 2.4 Item { property var targetItem: parent property bool fixedAspectRatio: true // Else zoom from width and height
QT程式自適應視窗大小
作為QT菜鳥的一員,總是容易遇到各種問題,然後歷經千辛萬苦解決它 問題: 我的程式需要在ARM板(Linux系統)上跑,也需要在PC(Windows上)跑,他們擁有不同大小的螢幕 在程式中佈局的介面能夠很好地適應視窗的大小變化,但是在UI設計中則不能實現 原因:在UI設計中沒有進
HTML控制元件自適應
//根據寬度計算高度 function ScreenRecord() { var imageResolutio = window.screen.width + "*" + window.screen.height;
Qt基礎——自適應視窗大小
我們知道,通過Qt的各種Layout可以實現控制元件的自動佈局。 但是在使用Qt Designer建立的UI時,發現UI始終是設計時的樣子,無法隨著容器的放大縮小自適應地變化。 通過之前對ui的.h檔案進行分析,我們知道Qt在生成ui程式碼時,根據最外層的Layout自動新增一個了Widget: /
easyUI Layout自適應視窗大小
</pre><p>關於頁面自適應效果</p><p><pre name="code" class="javascript">//監聽視窗大小變
QGraphicsView使影象自適應視窗大小
fd=QFileDialog(self) filePath=fd.getOpenFileName()[0] item=QGraphicsPixmapItem(QPixmap(filePath)) scene=QGraphicsScene() scene.addItem
選項卡Tabs 設定自適應視窗大小
$(window).resize(function() { //"_tabs" 為easyui-tabs的id $('#_tabs').tabs({ width : $
JQuery EasyUI Layout 在from佈局自適應視窗大小
在JQuery EasyUI中,如果直接在form上佈局時當視窗大小調整佈局不會改變,將佈局應用於body時中間隔著一個form,橫豎不好弄。 網上有多個解決方案,一般都是寫程式碼,在視窗大小改變時設定佈局。 經實驗,新版本的JQuery EasyUI中佈局可以採用以下方
Echarts 如何設定多個圖表自適應視窗大小
最近做了Echarts的一些東西 碰到一個很實際的問題 那就是如何使Echarts圖表能自適應視窗的大小 由於我一個頁面里加載了四個圖 所以用一般的 window.onresize = myCha
一個頁面存在多個echarts圖形,resize失效,圖形自適應視窗大小
當一個頁面有兩個echarts圖形,想要頁面大小發生改變,重新繪製圖形如果還寫為 myChart.se
11three.js自適應視窗大小
新增一個監控事件 window.addEventListener image.png function onResize() {