Qt之自定義介面(窗體縮放)

2021-09-23 14:36:05 字數 1039 閱讀 3034

通過前兩節內容,我們實現了自定義窗體的移動,以及自定義標題欄-用來顯示窗體的圖示、標題,以及控制窗體最小化、最大化、關閉。

在這之後,我們還缺少窗體的縮放-當滑鼠移動到窗體的邊框-左、上、右、下、左上角、左下角、右上角、右下角時候,滑鼠變為相應的樣式,並且窗體可以隨著滑鼠拖動而進行放大、縮小。

首先,設定無邊框,用於實現自定義標題欄。

// 設定無邊框

setwindowflags(qt::framelesswindowhint);

// 背景透明

setattribute(qt::wa_translucentbackground, true);

包含標頭檔案與所需要的庫。

#ifdef q_os_win

#include

#include

#endif

使用nativeevent進行窗體縮放。

注意:m_nborder表示滑鼠位於邊框縮放範圍的寬度,可以設定為5。

bool widget::nativeevent(const qbytearray &eventtype, void *message, long *result)

}return qwidget::nativeevent(eventtype, message, result);

}

qt5與qt4其中的乙個區別就是用nativeevent代替了winevent。

nativeevent主要用於程序間通訊-訊息傳遞。使用這種方式後,窗體就可以隨意縮放了,而且可以去掉標題欄中控制介面移動的** - 在mousepressevent中使用sendmessage來進行移動。

當然,這種實現只能在windows下使用,因為用的是win api,如果需要跨平台的話,需要自己處理各種事件,而且得考慮的很全面。

Qt之自定義介面(窗體縮放)

通過前兩節內容,我們實現了自定義窗體的移動,以及自定義標題欄 用來顯示窗體的圖示 標題,以及控制窗體最小化 最大化 關閉。在這之後,我們還缺少窗體的縮放 當滑鼠移動到窗體的邊框 左 上 右 下 左上角 左下角 右上角 右下角時候,滑鼠變為相應的樣式,並且窗體可以隨著滑鼠拖動而進行放大 縮小。首先,設...

Qt之自定義介面(窗體縮放)

通過前兩節內容,我們實現了自定義窗體的移動,以及自定義標題欄 用來顯示窗體的圖示 標題,以及控制窗體最小化 最大化 關閉。在這之後,我們還缺少窗體的縮放 當滑鼠移動到窗體的邊框 左 上 右 下 左上角 左下角 右上角 右下角時候,滑鼠變為相應的樣式,並且窗體可以隨著滑鼠拖動而進行放大 縮小。首先,設...

QT介面之美 自定義窗體

qt可以做非常精美的介面,我這裡寫了一段qt視窗各種方法的實現。include mainwindow.h include 選單欄 include 選單 include 事件 include include 工具欄 include include 狀態列 include include 文字編輯器 i...