// 首先在視窗標頭檔案中過載 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...