Qt實現視窗的無邊框化且可拉伸大小

2021-08-15 08:18:26 字數 1574 閱讀 1454

大家在做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 第乙個函式的第乙個列舉數是表示置頂顯示視窗,第二個是無邊框顯...