2011-12-20 16 views
8

Tengo una lista que contiene listas con dos elementos, una palabra y un número. Esta lista se presentará utilizando un widget de mesa.PyQt: ¿Cómo configuro diferentes tamaños de encabezado para encabezados individuales?

Mi objetivo es producir una tabla con dos columnas y con las filas necesarias, pero el encabezado de la columna que tendrá las palabras debería ser más grande que la columna de números.

Podría usar el tamaño de las columnas para el contenido, pero quiero la tabla sin el espacio en blanco blanco vacío alrededor de la tabla, después del cambio de tamaño.

Para la creación del código gui estoy usando QtDesigner.Gracias.

Respuesta

14

Existen algunos métodos de la clase QHeaderView que probablemente harán lo que usted desee. El más simple es:

table.horizontalHeader().setStretchLastSection(True) 

Esto asegurará que la última columna se cambia el tamaño automáticamente para adaptarse al espacio disponible en la tabla, dejando la anchura de las otras columnas, ya que son (y de tamaño variable por el usuario).

Alternativamente, existen métodos para configurar el ResizeMode de las columnas.

Para QT5:

table.setColumnWidth(1, 80) 
table.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch) 

Para Qt4:

table.setColumnWidth(1, 80) 
table.horizontalHeader().setResizeMode(0, QHeaderView.Stretch) 

Esto solucionará la anchura de la segunda columna, y asegurar la primera columna se cambia el tamaño automáticamente para llenar el espacio restante (pero impidiendo cualquier otro cambio de tamaño por parte del usuario).

+0

¿Hay una manera de lograr que el uso de Qt Desginer? ¿Hay una opción? – GiannisIordanou

+0

No hay opción en el diseñador para 'ResizeMode', pero sí para' setStretchLastSection' (es decir, 'Header/horizontalHeaderStrechLastSection' en el Editor de propiedades). – ekhumoro

4

la mejor solución para esto, en Qt5 se tienen que utilizar en lugar de setSectionResizeModesetResizeMode:

tabv = QTableView() 
tabv.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) 

o

tabv.horizontalHeader().setSectionResizeMode(1) 
Cuestiones relacionadas