簡體   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