Qt之自定義介面(實現無邊框 可移動)

2022-04-29 19:15:08 字數 1120 閱讀 1180

ui設計是指對軟體的人機互動、操作邏輯、介面美觀的整體設計。好的ui設計不僅是讓軟體變得有個性、有品位,還要讓軟體的操作變得舒適簡單、自由,充分體現軟體的定位和特點。

愛美之心人皆有之。其實軟體介面就像工業造型一樣,是產品的重要賣點。乙個產品擁有美觀的介面會給人帶來舒適的視覺享受,拉近人與產品的距離,是建立在科學性之上的藝術設計。

檢驗乙個介面的標準-既不是某個專案開發組領導的意見,也不是專案成員投票的結果,而是終端使用者的感受。

所以,對於大多數商業軟體或者專業產品來說,qt的本地化樣式顯然已經不能滿足期望,我們需要進行大量的樣式美化,才能夠讓它更有個性、有品位。

下面我們來實現這樣乙個介面。

設定視窗標誌為無邊框

setwindowflags(qt::framelesswindowhint | windowflags());
關於windowflags列舉值很多,其中有乙個windowstaysontophint,可以讓窗體位於所有介面之上,類似於qq主面板,一開啟就在所有軟體之上-比較霸道。

設定無邊框之後,窗體是無法移動的,下面我們介紹兩種方式來進行移動。

// 滑鼠相對於窗體的位置 event->globalpos() - this->pos()

void widget::mousepressevent(qmouseevent *event)

}// 若滑鼠左鍵被按下,移動窗體位置

void widget::mousemoveevent(qmouseevent *event)

// 設定滑鼠未被按下

void widget::mousereleaseevent(qmouseevent *event)

包含標頭檔案與需要用到的庫

#ifdef q_os_win

#pragma comment(lib, "user32.lib")

#include

#endif

傳送系統訊息,進行移動

void widget::mousepressevent(qmouseevent *event)

Qt 無邊框視窗自定義標題欄

實現了自定義標題欄的最小化,最大化 自適應工作列 關閉,拉伸,拖曳。因為不想引入其他資源,所以按鈕,背景都是系統提供的。效果圖 直接上 用法 include widget.h int main int argc,char argv pragma once include class qtoolbut...

QT 自定義邊框,可伸縮,延伸, 拖動

有時為了美觀,會自己製作邊框,這就意味著,你完成上述功能,要實現三個功能 1 窗體可自由 伸縮.可大可小.2 窗體可隨著滑鼠移動 3 自己實現標題欄 包含 最小化,最大化,關閉 那麼就按照上述的順序來講解 1 有時你會發現,當滑鼠放在邊框邊時 滑鼠會有變化,箭頭向上,向下,向左,向右,左上.思路 計...

Qt實現 可移動的無邊框視窗

日常開發中,因為需要自定義標題欄來實現更好的效果,所以經常需要隱藏視窗自帶的標題欄。在qt中,通過setwindowflags qt framelesswindowhint 函式對當前視窗設定無邊框,但是這樣存在乙個問題,就是視窗無法被滑鼠拖動了,所以這時候就需要重寫一下事件,來實現視窗的移動。先看...