通過前兩節内容,我們實作了自定義窗體的移動,以及自定義标題欄-用來顯示窗體的圖示、标題,以及控制窗體最小化、最大化、關閉。
在這之後,我們還缺少窗體的縮放-當滑鼠移動到窗體的邊框-左、上、右、下、左上角、左下角、右上角、右下角時候,滑鼠變為相應的樣式,并且窗體可以随着滑鼠拖動而進行放大、縮小。
<a href="#%e7%ae%80%e8%bf%b0">簡述</a>
<a href="#%e6%95%88%e6%9e%9c">效果</a>
<a href="#%e7%aa%97%e4%bd%93%e7%bc%a9%e6%94%be">窗體縮放</a>
<a href="#%e5%ae%9e%e7%8e%b0">實作</a>
<a href="#%e6%8e%a5%e5%8f%a3%e8%af%b4%e6%98%8e">接口說明</a>

包含頭檔案與需要用到的庫
使用nativeevent進行窗體縮放
qt5與qt4其中的一個差別就是用nativeevent代替了winevent。
nativeevent主要用于程序間通信-消息傳遞。在這裡我們主要進行窗體縮放,其中還添加了一些限制,比如:
滑鼠區域位于标題欄按鈕之上,則不進行處理。
滑鼠區域位于标題欄中,進行移動。
使用這種方式後,窗體就可以随意縮放了,而且可以去掉标題欄中控制界面移動的代碼-在mousepressevent中使用sendmessage來進行移動。
當然,這種實作隻能在windows下使用,因為用的是win api,如果需要跨平台的話,需要自己處理各種事件,而且得考慮的很全面。