versiones guia c++ user-interface qt qcombobox

c++ - guia - qgis manual



¿Cómo configuro el ancho de QComboBox para que se ajuste al elemento más grande? (3)

Tengo un QComboBox que relleno con QString usando:

comboBox->addItem(someString);

Cuando inicio mi aplicación GUI, el ancho del QComboBox es siempre 70, incluso si el elemento más pequeño es mucho más grande. ¿Cómo puedo establecer dinámicamente el ancho de un QComboBox , por ejemplo, en la QString más QString dentro del comboBox ?

Editar:

Después de algunas pruebas adicionales encontré la siguiente solución:

// get the minimum width that fits the largest item. int width = ui->sieveSizeComboBox->minimumSizeHint().width(); // set the ComboBoxe to that width. ui->sieveSizeComboBox->setMinimumWidth(width);


De acuerdo con los docs la SizeAdjustPolicy predeterminada es SizeAdjustPolicy así que quizás lo esté mostrando y luego SizeAdjustPolicy AdjustToContentsOnFirstShow

Ya sea primero antes de mostrarlo o intente configurar la política en QComboBox::AdjustToContents .

Editar:

Por cierto, supongo que tienes el QComboBox en un diseño adecuado, por ejemplo. QHBoxLayout , para que la política / sugerencia de tamaño realmente se esté utilizando.


Estaba buscando una solución para cambiar solo el tamaño del menú desplegable del cuadro combinado para ajustar el texto más grande sin cambiar el tamaño del cuadro combinado.

Tu sugerencia (@Linoliumz) me ayudó a encontrar la solución. Aquí está: Supongamos que tienes un cuadro combinado llamado cb:

C ++:

width = cb->minimumSizeHint().width() cb->view().setMinimumWidth(width)

PyQT:

width = cb.minimumSizeHint().width() cb.view().setMinimumWidth(width)


La documentación en línea de Qt (4.6) tiene esto que decir acerca de QComboBox :

enum SizeAdjustPolicy { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon }

Yo sugeriría

  1. Asegurarse de que SizeAdjustPolicy se esté utilizando realmente

  2. establecer la enumeración a AdjustToContents . Como mencionas un archivo .ui , sugiero hacerlo en Designer. Normalmente, su constructor no debería tener nada de extravagante con respecto a las cosas que hace en Designer.