2010-02-01 16 views
7

El QTableWdiget es fabuloso para pantallas de cuadrícula simples. Cambiar colores, fuentes, etc. es sencillo.QTableWidget: ¿Cómo puedo obtener líneas más ajustadas con menos espaciado de espaciado vertical?

Sin embargo, no logré darle a la cuadrícula un aspecto más "apretado" con menos espacio en blanco vertical. Veo que las conversaciones de documentación de Qt (por ejemplo here) sobre

  • margen
  • frontera
  • acolchado

alrededor de los widgets, pero cuando me puse éstos sólo consigo cambios alrededor de todo el widget de cuadrícula en lugar de dentro.

¿Cómo puedo configurar esto (con una hoja de estilo, o con opciones codificadas) directamente para hacer que la pantalla QTableWidget se muestre más ajustada?

Respuesta

5

El código recibiendo 'h' podría ser errónea. Fue solo un ejemplo. Copie & pegue el siguiente código bastante rudimentario. Cambie el valor en "setDefaultSectionSize()", recompile y ejecute. Deberías ver la diferencia. Establecer esto a 10 o 50 produce resultados visibles. En el código anterior, es posible que QFontMetrics o QFont estén estropeando algo.

Puede usar lo que quiera para obtener la altura, pero el tamaño de letra tiene más sentido.

#include <QtGui> 

int main(int argc, char* argv[]) 
{ 
QApplication app(argc, argv); 

QDialog* my_dialog = new QDialog(); 
QHBoxLayout* layout = new QHBoxLayout(); 
QTableWidget* my_table_widget = new QTableWidget(my_dialog); 

my_table_widget->setRowCount(10); 
my_table_widget->setColumnCount(10); 
my_table_widget->verticalHeader()->setDefaultSectionSize(15); 
layout->addWidget(my_table_widget); 
my_dialog->setLayout(layout); 
my_dialog->resize(500, 200); 
my_dialog->show(); 

return app.exec(); 
} 

EDITAR: No sé cómo formatear un bloque de código aquí ... discúlpeme. :)

Edición 2: Me fijo que, y la siguiente sencilla tighterTable.pro archivo ayuda a lo largo.

TEMPLATE = app 
TARGET = 
DEPENDPATH += . 
INCLUDEPATH += . 

SOURCES += tighterTable.cpp # if that is the filename 

Gracias un gran grupo de grasa para esto.Por cierto: Editar como código es solo sangría por cuatro espacios, y/o presionar el botón con el pequeño '101010' en la fila de formateo.

3

QTableWidget es un modelo y vista de conveniencia. Normalmente, el método data() de QAbstractItemModel proporciona un SizeHintRole que se utiliza para indicar a la vista el tamaño que debe tener cada celda.

Dado que está utilizando QTableWidget, no creo que haya nada que pueda hacer para cambiar la sugerencia de tamaño que devuelve su modelo interno. Incluso el Qt style sheet documentation no menciona nada en esa área.

+0

Hola Kaleb, agradezco la respuesta. Más o menos llegué a una conclusión similar ("simplemente no puedo hacer esto") pero es bueno tener un segundo par de miradas sobre el tema. –

5

Lo que estás buscando tiene una solución muy tonta en mi humilde opinión, pero funciona. Debe configurar los miembros de los encabezados 'defaultSectionSize()'. Se accede a través de verticalHeader() & horizontalHeader(). Nunca configuré el ancho de la columna w/this b/c la mayoría de mis proyectos implican que agregue filas, no columnas, y simplemente llamo resizeColumnsToContents o hago un cambio de tamaño manual. Sin embargo, las filas son molestas. Generalmente obtengo la altura de la fuente usando QFontMetrics, y agrego 2. Cualquier fila subsiguiente agregada debe tener esta altura, y viola: mirada más cerrada.

Espero que ayude.

EDIT:

código no probado:

QFontMetrics fm(my_font); 
int h = fm.height() + 2; 
my_table->verticalHeader()->setDefaultSectionSize(h); 
+0

Paul, no puedo ir a trabajar. Obtengo 'fm' y' h' y puedo configurar, pero la tabla no cambia de aspecto. Tampoco importa si elimino filas y agrego nuevas; todas tienen ese espacio vertical adicional. –

+0

¡Funciona! La altura de la fila se cambia en QTableWidget. – Zmey

0

QTableWidget -> verticalHeader -> setMinimumSectionSize() es la forma correcta, y se puede configurar en ui.

Cuestiones relacionadas