Qt在隱藏邊框模式下怎麼移動視窗

2021-10-05 17:05:14 字數 1702 閱讀 8091

// 首先在視窗標頭檔案中過載 paintevent

protected:

void

paintevent

(qpaintevent *event)

;// 在 .cpp 檔案中

// 過載 painterevent

void widget:

:paintevent

(qpaintevent *event)

現在的效果:

接下來我們把邊框隱藏, 並將背景設定為透明

// 在視窗的建構函式中

// 將邊框去除 windowflags() 是把原先有的屬性也新增上

setwindowflags

(qt:

:framelesswindowhint |

windowflags()

);// 將視窗背景設定為透明

setattribute

(qt:

:wa_translucentbackground)

;

現在的效果:

這樣我們發現我們沒法移動視窗對吧, 下面我們來處理這個移動問題

我們用 滑鼠單擊 來實現移動

分析: 需要過載滑鼠單擊滑鼠移動事件

// 還是在視窗標頭檔案中過載 mousepressevent 和 mousemoveevent

protected:

//放在和上次一樣的屬性裡面就可以的

void

mousemoveevent

(qmouseevent *event)

;void

mousepressevent

(qmouseevent *event)

;// 還需要新增乙個私有變數, 用於儲存座標差值

private:

qpoint coordinate;

// 在 .cpp 檔案中

// 滑鼠左鍵觸發

void widget:

:mousepressevent

(qmouseevent *event)

}// 滑鼠移動觸發

void widget:

:mousemoveevent

(qmouseevent *event)

}

// 怕有人不清楚, 我們在 .cpp 中要記得加標頭檔案

#include

//畫筆

#include

//載入

#include

//滑鼠事件

現在, 我們的視窗就可以單擊移動了! 另外需要的話要自己加個退出鍵哦

下面分析下關於座標差值視窗定位的問題:

Qt 不規則視窗 視窗邊框隱藏,並能拖動

qt 不規則視窗 實現不規則視窗,並能拖動 vqshapewidget.h ifndef vqdragablewidget h define vqdragablewidget h include qwidget class vqshapewidget public qwidget endif vqd...

Qt 下 Singleton 模式小記

singleton pattern singleton 單件 模式的意圖是 保證類僅有乙個例項,並提供乙個訪問它的全域性訪問點。應用於多執行緒環境的 singleton 模式又叫做 double checked locking 雙重檢查鎖定 模式。include include include cl...

Qt 下 Singleton 模式小記

singleton pattern singleton 單件 模式的意圖是 保證類僅有乙個例項,並提供乙個訪問它的全域性訪問點。應用於多執行緒環境的 singleton 模式又叫做 double checked locking 雙重檢查鎖定 模式。include include include cl...