參考:
這個類是關於無邊框窗體的拖動和改變大小的。如果是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介面,沒辦法了,重新整理了下思路,沒想到做出來了...