1. 程式人生 > >Qt Creator 窗體控制元件自適應視窗大小布局

Qt Creator 窗體控制元件自適應視窗大小布局


常見的軟體視窗大小改變(最大化、手動改變時)需要視窗的部件能夠自適應佈局,而在Qt的應用程式介面設計中,對於像我一樣的初學者如何實現視窗自適應調整還是要繞點彎路的。網上百度了很多,多數說的很含糊,還有很多是用程式實現的,既然已經有Qt Creator那麼高整合度的工具了,我還是傾向於直接在Qt Creator中通過視覺化配置的方式完成,一是所見即所得,而是效率要高不少。

Qt 的詳細介紹請點這裡
Qt 的下載地址請點這裡

推薦閱讀:

Qt中如果想實現窗體內空間隨著窗體大小調整,必須使用佈局管理,常用的佈局管理有QHBoxLayout、QVBoxLayout、QGridLayout,空的地方使用spacer控制元件進行填充,因此首先將窗體空間使用佈局管理典型應用如下圖所示。

image

我這裡使用QGridLayout,按住Ctrl多選需要佈局的窗體控制元件,右鍵-佈局-柵格化局,根據需要進行調整。

要想是控制元件根據窗體進行調整,最為重要的一點就是設定視窗部件的大小策略,各控制元件均有這一項設定,如下圖所示。

image

這部分具體的引數解釋摘錄如下:

結合控制元件的SizePolicy屬性,來控制佈局管理中的控制元件的尺寸自適應方式。

控制元件的sizePolicy說明控制元件在佈局管理中的縮放方式。Qt提供的控制元件都有一個合理的預設sizePolicy,但是這個預設值有時不能適合所有的佈局,開發人員經常需要改變窗體上的某些控制元件的sizePolicy。一個QSizePolicy的所有變數對水平方向和垂直方向都適用。下面列舉了一些最長用的值:

A. Fixed:控制元件不能放大或者縮小,控制元件的大小就是它的sizeHint。

B. Minimum:控制元件的sizeHint為控制元件的最小尺寸。控制元件不能小於這個sizeHint,但是可以

放大。

C. Maximum:控制元件的sizeHint為控制元件的最大尺寸,控制元件不能放大,但是可以縮小到它的最小

的允許尺寸。

D. Preferred:控制元件的sizeHint是它的sizeHint,但是可以放大或者縮小

E. Expandint:控制元件可以自行增大或者縮小

注:sizeHint(佈局管理中的控制元件預設尺寸,如果控制元件不在佈局管理中就為無效的值)

所以對於需要根據視窗大小對應改變的部件我這裡就設定為Expandint。

在部件大小策略的下方還有伸縮因子的設定,用於設定視窗部件在伸縮過程中的對應比例,這部分可以自行摸索。

要想實現隨著視窗自動縮放,很重要的一點是需要設定頂級佈局,對於一個視窗來說,只能有一個佈局成為它的頂級佈局,而剛剛的設定還只是控制元件之間的佈局,因此需要放入窗體佈局中進行佈局。

在沒有控制元件的地方右擊-佈局-在狀體佈局中佈局,如下圖所示:


image

相關推薦

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() {