pyqt tutorial español
¿Cómo puedo deshacerme de la herramienta de cambio de tamaño en un QDialog? (4)
La forma más limpia de hacer que una ventana o diálogo no sea redimensionable es establecer la restricción de tamaño de su diseño en QLayout.SetFixedSize (o QLayout :: SetFixedSize en C ++). Solo necesita hacer esto para el diseño principal en la ventana, el que contiene todos los otros widgets y diseños.
Veo que estás usando Qt Designer para crear la interfaz de usuario para tu diálogo. Abra el archivo .ui y seleccione la ventana, luego desplácese hacia abajo en el editor de propiedades hasta que vea la sección Diseño. Establezca la propiedad layoutSizeConstraint en SetFixedSize.
Cuando obtiene una vista previa del formulario, los widgets dentro del cuadro de diálogo deben organizarse correctamente, pero no podrá cambiar el tamaño del cuadro de diálogo.
Tengo la siguiente clase:
class SelectDateDialog(QDialog):
startDate = date.today()
endDate = date.today()
def __init__(self, text, isInterval = False):
QDialog.__init__(self)
uic.loadUi("resources/SelectDate.ui", self)
Ahora, el diálogo se puede cambiar de tamaño en Mac OS X 10.5, pero no debería ser. Tiene el mango de cambio de tamaño en la esquina inferior derecha.
Ya probé la función setSizeGripEnabled
, no cambió nada.
¿Cómo puedo hacer que no se pueda cambiar el tamaño?
Por alguna razón, siempre tuve que hacer lo siguiente (en Qt Designer) para estar absolutamente seguro de que la ventana no se podía redimensionar:
sizePolicy -> Horizontal Policy = Fixed
sizePolicy -> Vertical Policy = Fixed
minimumSize -> Width = X
minimumSize -> Height = Y
maximumSize -> Width = X
maximumSize -> Height = Y
Tenga en cuenta que elegí X e Y para ilustrar que minimumSize == maximumSize . Cuando haga esto, el controlador de cambio de tamaño debería desaparecer por sí solo, aunque he visto que al menos una distribución de Linux deja el control. En ese caso particular, simplemente ocultamos el mango, ya que de todos modos no podía cambiar el tamaño de la ventana.
Utilizo el siguiente código para arreglar el tamaño de un QDialog
:
layout()->setSizeConstraint( QLayout::SetFixedSize ) ;
setSizeGripEnabled( false ) ;
La primera línea impone el tamaño del diseño en función del tamaño preferido de los widgets contenidos en el diseño. La segunda línea elimina el agarre real.
Para revertir esto, debe establecer la restricción predeterminada en el diseño y volver a habilitar el control de tamaño.
si desea un QDialog dlg no modificable, configure
dlg.setWindowFlags(Qt::MSWindowsFixedSizeDialogHint);