2010-06-30 12 views
17

Tengo un QComboBox que me llenan de QString usando:¿Cómo configuro el ancho de QComboBox para que se ajuste al elemento más grande?

comboBox->addItem(someString); 

Cuando empiezo mi aplicación con interfaz gráfica del ancho del ComboBox siempre es 70, aunque el más pequeño es mucho más grande. ¿Cómo puedo establecer dinámicamente el ancho de un QComboBox, por ejemplo, en el QString más grande dentro del comboBox?

Editar:

Después de algunas pruebas más me encontré con 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); 
+0

Además, si se desea mantener el cuadro combinado del mismo tamaño, pero ampliar el ancho desplegable para adaptarse a la cadena más larga, se puede establecer la anchura mínima de la vista: 'ui-> sieveSizeComboBox-> view () -> setMinimumWidth (ancho); ' – Matthew

Respuesta

6

De acuerdo con la docs el valor por defecto es SizeAdjustPolicyAdjustToContentsOnFirstShow así que tal vez usted está mostrando y luego poblarlo?

O rellene primero antes de mostrarlo o intente establecer la directiva en QComboBox::AdjustToContents.

Editar:

Por cierto que estoy asumiendo que usted tiene el QComboBox en un diseño adecuado, por ejemplo. QHBoxLayout, por lo que la sugerencia/política de tamaño se está utilizando realmente.

+0

Gracias, sí, el QComboBox está en un QHBoxLayout. Traté de modificar SizeAdjustPolicy pero no tuvo ningún efecto, también intenté rellenar QComboBox antes de llamar a ui-> setupUi (esto); en el constructor, pero el programa se bloqueó. El QComboBox fue creado usando Qt Creator, no sé si es posible poblarlo antes de que se muestre. – Linoliumz

+0

¿Qué has establecido como 'SizePolicy' en el cuadro combinado? –

+0

Tiene sentido que intentar completar el combo antes de llamar al ui-> setupUi (esto) causaría una segfault, porque el objeto QComboBox aún no se ha instanciado. Establezca AdjustPolicy en QComboBox :: AdjustToContents. – Casey

8

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

enum SizeAdjustPolicy { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon } 

Yo sugeriría

  1. asegurar la SizeAdjustPolicy que realmente está siendo utilizado

  2. establecer la enumeración de AdjustToContents. Como mencionas un archivo .ui, te sugiero que lo hagas en Designer. Normalmente no debería haber nada sofisticado en su constructor en lo que respecta a las cosas que hace en Designer.

+0

Por favor, hágamelo saber cómo hacer esto en Qt 3.3.6? – shan

Cuestiones relacionadas