如何为Qt无框小部件实现调整大小选项,将其用作主窗口?
答案 0 :(得分:3)
我刚刚遇到了这个问题,我通过为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
答案 1 :(得分:2)
QSizeGrip类提供了一个调整大小句柄,用于调整顶级窗口的大小。