如何摆脱QDialog中的resize-handle?

时间:2009-02-22 17:35:20

标签: qt pyqt

我有以下课程:

class SelectDateDialog(QDialog):
    startDate = date.today()
    endDate = date.today()

    def __init__(self, text, isInterval = False):
        QDialog.__init__(self)
        uic.loadUi("resources/SelectDate.ui", self)

现在,该对话框可在Mac OS X 10.5上调整大小,但不应该。它的右下角有调整大小的句柄。

我已经尝试了setSizeGripEnabled功能,它没有改变任何内容。

如何使其无法调整大小?

4 个答案:

答案 0 :(得分:8)

如果你想要一个不可调整大小的QDialog dlg, 然后设置

dlg.setWindowFlags(Qt::MSWindowsFixedSizeDialogHint);

答案 1 :(得分:5)

我使用以下代码来修复QDialog

的大小
layout()->setSizeConstraint( QLayout::SetFixedSize ) ;
setSizeGripEnabled( false ) ;

第一行根据布局中包含的小部件的首选大小强制执行布局大小。第二行删除了实际的抓地力。

要反转此操作,您可以在布局上设置默认约束并重新启用尺寸控制。

答案 2 :(得分:4)

使窗口或对话框不可调整大小的最简洁方法是将其布局的大小约束设置为QLayout.SetFixedSize(或C ++中的QLayout :: SetFixedSize)。您只需要为窗口中的主布局执行此操作 - 包含所有其他窗口小部件和布局的布局。

我看到您正在使用Qt Designer为对话框创建用户界面。打开.ui文件并选择窗口,然后在属性编辑器中向下滚动,直到看到“布局”部分。将layoutSizeConstraint属性设置为SetFixedSize。

预览表单时,对话框中的小部件应正确排列,但您无法调整对话框的大小。

答案 3 :(得分:1)

无论出于何种原因,我总是必须执行以下操作(在Qt Designer中)以确保窗口无法调整大小:

sizePolicy -> Horizontal Policy = Fixed
sizePolicy -> Vertical Policy = Fixed

minimumSize -> Width = X
minimumSize -> Height = Y

maximumSize -> Width = X
maximumSize -> Height = Y

请注意,我选择X和Y来说明 minimumSize == maximumSize 。当你这样做时,调整大小句柄应该自己消失,虽然我已经看到至少有一个Linux发行版留下了句柄。在那种特殊情况下,我们只是隐藏了句柄,因为它无论如何都无法调整窗口的大小。