[英]Implement Resize option to Qt Frameless widget
我如何實現Qt無框架小部件用作主窗口的調整大小選項?
我也剛剛遇到了這個問題,並通過為QMainWindow添加自定義mouseEvent處理程序解決了該問題。 我正在使用PyQt,但在C ++中應該相當相似。
在我的實現中,將鼠標右鍵拖動到無框架小部件(稱為MyClass
)上的任意位置將調整其大小。
當按下鼠標右鍵時,存儲坐標:
def mousePressEvent(self, event):
super(MyClass, self).mousePressEvent(event)
if event.button() == QtCore.Qt.RightButton:
self.rdragx = event.x()
self.rdragy = event.y()
self.currentx = self.width()
self.currenty = self.height()
self.rightClick = True
如果在按下按鈕時(即,拖動鼠標時)移動了鼠標,請調整QMainWindow的大小。 不允許它變得小於預定義的最小大小。
def mouseMoveEvent(self, event):
super(Myclass, self).mouseMoveEvent(event)
if self.rightClick == True:
x = max(frame.minimumWidth(),
self.currentx + event.x() - self.rdragx)
y = max(frame.minimumHeight(),
self.currenty + event.y() - self.rdragy)
self.resize(x, y)
釋放鼠標按鈕后,將按鈕變量重置為False即可停止調整大小。
def mouseReleaseEvent(self, event):
super(MyClass, self).mouseReleaseEvent(event)
self.rightClick = False
QSizeGrip類提供用於調整頂級窗口大小的調整大小句柄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.