[英]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.