如何摆脱QDialog中的调整大小句柄?

问题描述 投票:3回答:5

我有以下课程:

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函数,它没有做任何改变。

我如何使其无法调整大小?

qt pyqt
5个回答
8
投票

如果您想使用不可调整大小的QDialog dlg,然后设置

dlg.setWindowFlags(Qt::MSWindowsFixedSizeDialogHint);

5
投票

我使用以下代码固定QDialog的大小:

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

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

要扭转这种情况,您将在布局上设置默认约束并重新启用尺寸夹点。


4
投票

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

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

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


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发行版保留了该句柄。在这种情况下,我们只是隐藏了句柄,因为它无论如何都无法调整窗口的大小。


0
投票

Tambien我激增算法类似Al Transformar de ui a py con pyuic5 y luego compilarlo

    AttributeError: 'MainWindow' object has no attribute 'setSizeGripEnabled' 

[Luego reviso e elimino esa linea y tambien me vota otro error en la siguiente linea

   'MainWindow' object has no attribute 'setModal'

[Una vez eliminadas las lineas el programa funciona

Creo que esto es por que refimensione eltamañode la ventana de esta manera

    DlgSesion.setMinimumSize(QtCore.QSize(480, 330))
    DlgSesion.setMaximumSize(QtCore.QSize(480, 330))

[esto lo ise en qtdesigner y ya no muestra el cambio de maus al redimencionar la interfaz

© www.soinside.com 2019 - 2024. All rights reserved.