繁体   English   中英

对Qt无框架小部件实施“调整大小”选项

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

QSizeGrip类提供用于调整顶级窗口大小的调整大小句柄。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM