1 建立不規則視窗的步驟:
1)重寫繪圖事件,在繪圖事件中顯示一張。
2)但是顯示後仍帶有視窗的邊框,所以我們需要在視窗的建構函式中去掉邊框,並使其類似一樣,使視窗也透明顯示。
3)由於邊框沒了,即右上角的按鈕無了,滑鼠無法操作,所以需要重寫滑鼠事件,包括滑鼠按下和移動事件。
4)滑鼠按下時:若為右鍵,我們使它關閉視窗;若為左鍵,記錄其相對於視窗的座標。利用它在滑鼠移動事件中按下左鍵不放時可以拖拽不規則視窗。
5)滑鼠移動時:滑鼠移動事件觸發時,若是滑鼠左鍵處於按下狀態,則利用左鍵按下時記錄的座標,使其與全域性座標相減,得出相對於螢幕的視窗原點座標來移動視窗。
注意重點:建立不規則視窗全程只需要記住,滑鼠在按下狀態,觸發滑鼠移動事件時,以相對於螢幕的視窗原點座標來移動。即:p代表滑鼠按下時相對於視窗的座標。
move
(e->
globalpos()
-p);
2 **:只給出.cpp實現檔案足夠理解。
#include
"widget.h"
#include
"ui_widget.h"
#include
#include
#include
widget::
widget
(qwidget *parent)
:qwidget
(parent),ui
(new ui::widget)
widget::
~widget()
//第一步
void widget::
paintevent
(qpaintevent *
)//第四步 --第三步包括第四第五步
void widget::
mousepressevent
(qmouseevent *e)
if(e-
>
button()
== qt::leftbutton)
}//第五步
void widget::
mousemoveevent
(qmouseevent *e)
}
QT筆記之不規則視窗的實現
qt實現的不規則視窗,是根據的形狀顯示 1.去標題欄 2.設定視窗背景為透明色 3.最後給視窗設定背景色 注 背景圖為鏤空的 格式為.png h1 ifndef qanormalydlg h 2 define qanormalydlg h 34 include 5 include ui qanorm...
QT中不規則視窗的實現
描述 mask.png 視窗掩碼圖 描述 toolbutton.png 按鈕背景圖 描述 toolbutton mask.png 按鈕掩碼圖 描述 runtime.png 示例執行時圖 qt 中不規則窗體和部件的實現,不管是窗體還是部件,都是從qwidget派生而來的,所以它們的原理是一樣的,都是設...
Qt繪製形狀不規則視窗(二)
環境配置 mingw qt 5.12 效果圖 紅色部分是桌面背景顏色 下面這張有助於分析 視窗邊角弧度border radius沒有註明 testarrowwidget類繼承自qwidget define shadow width 10 視窗陰影寬度 define width 15 小三角的寬度 d...