天天看點

Qt之窗體拖拽、自适應分辨率、自适應大小簡述實作

在自定義無邊框、标題欄的界面中,需要自己實作最小化、最大化、關閉、窗體背景等功能。最小化、最大化、關閉等按鈕設計及功能比較簡單,這裡就不多做介紹。今天主要介紹一下繪制背景的問題,主要實作自适應螢幕分辨率。

<a href="#%e7%ae%80%e8%bf%b0">簡述</a>

<a href="#%e5%ae%9e%e7%8e%b0">實作</a>

<a href="#%e8%87%aa%e9%80%82%e5%ba%94%e6%96%b9%e6%a1%88">自适應方案</a>

<a href="#%e6%95%88%e6%9e%9c">效果</a>

<a href="#%e6%ba%90%e7%a0%81">源碼</a>

先看一下ui設計的圖(大小:1298*786):

Qt之窗體拖拽、自适應分辨率、自适應大小簡述實作

如何自适應螢幕分辨率呢?下面是常用的一些方案:

為每個分辨率單獨做一張圖

将圖檔切分為九宮格形

在原圖基礎上進行實作

下面,我們分别對它們一一進行分析:

常用的分辨率很多,800*600、1024*768、1280*800、1680*1050等等。。。那麼得需要多少張圖呢?而且資源一旦過多,會加大程式開銷。

需要将圖檔切分,而且如果切分不合适,還得來回重複切圖,加大ui工作量。。。

在原圖的基礎上實作,在代碼邏輯上處理!

綜上所述:很明顯,方案3是最好的,那麼如何實作呢?請繼續往下看!

由于界面存在縮放,是以如果窗體有圓角、或者存在陰影效果,縮放過程中會變形,是以需要進行特殊化處理!

左上角、左下角、右上角、右下角進行切分分别繪制(下面所說的切分都使用代碼實作)

左、上、右、下部位進行切分,計算出窗體的大小後,在原方向進行拉伸

中央部分切分出一部分進行平鋪

讓ui将圓角及陰影部分标注出來,這裡需要标注寬和高,以便于實作切圖。

Qt之窗體拖拽、自适應分辨率、自适應大小簡述實作

現在,來開始我們的代碼之旅吧!

關于縮放處理,請參考:

<a href="http://blog.csdn.net/liang19890820/article/details/50553111">qt之自定義界面(實作無邊框、可移動)</a>

<a href="http://blog.csdn.net/liang19890820/article/details/50557240">qt之自定義界面(窗體縮放-跨平台終極版)</a>

<a href="http://blog.csdn.net/liang19890820/article/details/50557057">qt之自定義界面(窗體縮放)</a>

繼續閱讀