大家在做qt的時候,經常都會遇到自定義qwidget吧,但一旦實現後,有變的不可以拉伸了,今天我們就來做乙個可拉伸的自定義qwidget並且可以移動
#ifndef autosizewidget_h
#define autosizewidget_h
#include "basewidget.h"
//這是mainwindow的基類,繼承與qwidget,實現了可拉伸大小
enum direction ;
class autosizewidget : public qwidget
;#endif // autosizewidget_h
cpp檔案
#include "autosizewidget.h"
autosizewidget::autosizewidget(qwidget *parent)
: qwidget(parent)
void autosizewidget::judgeregionsetcursor(const qpoint& currentpoint)
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)
else
}void autosizewidget::mousereleaseevent(qmouseevent *event)
}}void autosizewidget::mousepressevent(qmouseevent *event)
else
break;
default:
qwidget::mousepressevent(event);
}}void autosizewidget::mousemoveevent(qmouseevent *event)
else
this->setgeometry(rmove);
}else
}qwidget::mousemoveevent(event);
}autosizewidget::~autosizewidget()
本文參照與: Qt實現 可移動的無邊框視窗
日常開發中,因為需要自定義標題欄來實現更好的效果,所以經常需要隱藏視窗自帶的標題欄。在qt中,通過setwindowflags qt framelesswindowhint 函式對當前視窗設定無邊框,但是這樣存在乙個問題,就是視窗無法被滑鼠拖動了,所以這時候就需要重寫一下事件,來實現視窗的移動。先看...
QT 視窗樣式,最小化 無邊框 不規則窗體
第乙個引數是設定無邊框。第二個引數是允許工作列按鈕右鍵選單,第三個引數是允許最小化與還原。setwindowflags qt framelesswindowhint qt windowsystemmenuhint qt windowminimizebuttonhint 設定窗體標題欄隱藏並設定位於頂...
在Qt上實現無邊框效果,視窗的移動和關閉
先直接上 setwindowflags qt windowstaysontophint qt framelesswindowhint windowflags setattribute qt wa translucentbackground 第乙個函式的第乙個列舉數是表示置頂顯示視窗,第二個是無邊框顯...