33黑馬QT筆記之不規則視窗

2021-10-05 15:02:24 字數 1171 閱讀 4735

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...