首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PySide.QtGui.QDialog问题

PySide.QtGui.QDialog问题
EN

Stack Overflow用户
提问于 2012-11-05 08:15:12
回答 1查看 734关注 0票数 1

我想在我的无边框对话框周围画一个框架,同时交互地调整它的大小,但似乎QDialog.setSizeGripEnabled(True)QWidget.resizeEvent在一起不能很好地工作。对话框不能以交互方式调整大小,这是已知问题吗?

代码语言:javascript
复制
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() )
EN

回答 1

Stack Overflow用户

发布于 2012-11-05 09:41:18

这里的问题是,您覆盖resizeEvent而不传递它,这似乎破坏了生成的大小夹点的功能。

最简单的解决方案是调用:

代码语言:javascript
复制
    super(MyDialog, self).resizeEvent(event)

在您的事件处理程序中。另一种选择是将您自己的QResizeGrip添加到框架中:

代码语言:javascript
复制
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
        # [...]

这样做的好处是您可以自由地排列大小夹点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13224391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档