qt 無邊框窗體的拖到和改變大小

2022-01-14 22:41:50 字數 1929 閱讀 2268

參考:

這個類是關於無邊框窗體的拖動和改變大小的。如果是qwidget,請將繼承類改為qwidget,並將原始檔的qdialog用qwidget替換。

我曾想將這個類作為中間類,讓視窗類繼承此類,這樣如果有多個無邊框視窗,就不用每個視窗都作重複改變了,但是沒有成功。由於時間關係,沒再做深入研究。以後有時間再說吧。

標頭檔案:

1

#ifndef customframelesswidget_h

2#define customframelesswidget_h

34 #include 5 #include 6 #include 7 #include 8

9#define padding 2

10enum direction ;

1112

class customframelesswidget : public

qdialog13;

2829

#endif

//customframelesswidget_h

原始檔:

1 #include "

customframelesswidget.h"2

3 customframelesswidget::customframelesswidget(qwidget*parent):qdialog(parent)

4");

//設定樣式背景色,可有可無12}

1314

void customframelesswidget::region(const qpoint &cursorglobalpoint)

15 else

if(x >= rb.x() - padding && x <= rb.x() && y >= rb.y() - padding && y <=rb.y()) else

if(x <= tl.x() + padding && x >= tl.x() && y >= rb.y() - padding && y <=rb.y()) else

if(x <= rb.x() && x >= rb.x() - padding && y >= tl.y() && y <= tl.y() +padding) else

if(x <= tl.x() + padding && x >=tl.x()) else

if( x <= rb.x() && x >= rb.x() -padding) else

if(y >= tl.y() && y <= tl.y() +padding) else

if(y <= rb.y() && y >= rb.y() -padding) else61}

6263

void customframelesswidget::mousereleaseevent(qmouseevent *event)64

71}72}

7374

void customframelesswidget::mousepressevent(qmouseevent *event)75

else

84break;85

case

qt::rightbutton:

86this->close();

87break;88

default

:89 qdialog::mousepressevent(event

);90}91

92}9394

void customframelesswidget::mousemoveevent(qmouseevent *event)95

else

152this->setgeometry(rmove);

153 } else

157}

158 qdialog::mousemoveevent(event

);159 }

無邊框窗體拖動和改變大小

const int htleft 10 const int htright 11 const int httop 12 const int httopleft 13 const int httopright 14 const int htbottom 15 const int htbottomlef...

Qt 無邊框窗體改變大小 完美實現

近期,做專案用到無邊框窗體,令人蛋疼的是無邊框窗體大小的改變要像右邊框那樣,上下左右四周,而且要流暢。網上也找了些 發現居然還要連線到windows事件,這顯然不合常理,後來自己新建了demo,寫了乙個小時,問題太多了,扔一邊先不管了。今天需要改進ui介面,沒辦法了,重新整理了下思路,沒想到做出來了...

Qt 無邊框窗體改變大小 完美實現

近期,做專案用到無邊框窗體,令人蛋疼的是無邊框窗體大小的改變要像右邊框那樣,上下左右四周,而且要流暢。網上也找了些 發現居然還要連線到windows事件,這顯然不合常理,後來自己新建了demo,寫了乙個小時,問題太多了,扔一邊先不管了。今天需要改進ui介面,沒辦法了,重新整理了下思路,沒想到做出來了...