簡體   English   中英

PySide.QtGui.QDialog問題

[英]PySide.QtGui.QDialog issue

我想在我的無邊界對話框周圍畫一個框架,同時以交互方式調整它的大小,但似乎QDialog.setSizeGripEnabled(True)QWidget.resizeEvent不能很好地協同工作。 對話框無法交互調整大小,這是一個已知問題嗎?

class MyDialog(QtGui.QDialog):

    def __init__(self,x,y):
        QtGui.QDialog.__init__(self)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
        self.setGeometry(x,y,250,300)    
        self.setSizeGripEnabled(True)

        self.frame = QtGui.QFrame(self)
        self.frame.setGeometry(self.rect())
        self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtGui.QFrame.Plain)
        etc...

    def resizeEvent( self, event ):
        r = self.rect()
        s = event.size()
        self.frame.setGeometry( r.x(), r.y(), s.width(), s.height() )

這里的問題是,您覆蓋了resizeEvent而不傳遞了它,這似乎破壞了所生成的大小抓取功能。

最簡單的解決方案是調用:

    super(MyDialog, self).resizeEvent(event)

在您的事件處理程序中。 另一個選擇是將自己的QResizeGrip添加到框架中:

class MyDialog(QtGui.QDialog):

    def __init__(self,x,y):
        # [...]
        self.frame.setLayout(QtGui.QVBoxLayout())
        self.sizeGrip = QtGui.QSizeGrip(self.frame)
        self.frame.layout().addWidget(self.sizeGrip, 0,
                QtCore.Qt.AlignRight | QtCore.Qt.AlignBottom)
        self.setStyleSheet("QSizeGrip {background-color: #202020}") # make it visible
        # [...]

這樣的優點是您可以自由安排尺寸手柄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM