es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Qué limita el tamaño mínimo de un widget QGraphicsView cuando está en un diseño?

Si tengo un widget QGraphicsView por sí solo, puedo redimensionarlo hasta hacerlo desaparecer, sin embargo, una vez lo pongo en un diseño no quiere redimensionarse más pequeño que 70×70.

Esto no parece ser un problema con un QWidget genérico.

from PyQt5.QtWidgets import *

app = QApplication([])
w = QWidget()

gv1 = QGraphicsView()
gv1.setMinimumSize(0,0)
gv2 = QGraphicsView()
gv2.setMinimumSize(0,0)

l = QGridLayout()
l.addWidget(gv1)
l.addWidget(gv2)

l.setContentsMargins(0,0,0,0)
l.setSpacing(0)
w.setLayout(l)
w.show()
w.resize(100, 1)

app.exec_()
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema que estás experimentando probablemente se debe al widget QGraphicsView que está colocado en un diseño. Cuando un widget está en un diseño, el administrador de diseños controla el tamaño del widget según las restricciones impuestas por el diseño.

    En tu código, has establecido el tamaño mínimo de los widgets QGraphicsView en 0,0 utilizando la función setMinimumSize(). Sin embargo, esto no anula las restricciones del diseño una vez que se agrega el widget a él.

    Para permitir que el widget QGraphicsView se redimensione a un tamaño más pequeño, puedes ajustar las restricciones del diseño. En tu código, puedes cambiar la línea w.resize(100, 1) por w.resize(70, 70) para que coincida con la restricción de tamaño mínimo establecida por el diseño. Alternativamente, puedes ajustar las restricciones del diseño para permitir tamaños de widget más pequeños, por ejemplo, estableciendo el espaciado entre widgets en un valor negativo.

    from PyQt5.QtWidgets import *
    
    app = QApplication([])
    w = QWidget()
    
    gv1 = QGraphicsView()
    gv1.setMinimumSize(0,0)
    gv2 = QGraphicsView()
    gv2.setMinimumSize(0,0)
    
    l = QGridLayout()
    l.addWidget(gv1)
    l.addWidget(gv2)
    
    # Ajustar las restricciones del diseño para permitir tamaños de widget más pequeños
    l.setHorizontalSpacing(-1)
    l.setVerticalSpacing(-1)
    
    l.setContentsMargins(0,0,0,0)
    w.setLayout(l)
    w.show()
    w.resize(50, 50)
    
    app.exec_()
    

    Al ajustar el espaciado entre widgets a un valor negativo, puedes permitir que los widgets QGraphicsView se redimensionen a tamaños más pequeños, dependiendo del tamaño de su contenido.

Comments are closed.