QTableWidget: Come posso ottenere linee più strette con imbottitura spaziatura verticale meno?

StackOverflow https://stackoverflow.com/questions/2179215

  •  24-09-2019
  •  | 
  •  

Domanda

Il QTableWdiget è favoloso per semplici schermi griglia. Modifica dei colori, font, ecc è molto semplice.

Comunque, io non sono riuscito a dare la griglia di uno sguardo 'stretto' con uno spazio meno verticale. Vedo che i colloqui Qt documentazione (ad esempio, qui ) circa

  • margine
  • confine
  • padding

intorno widget, ma quando ho impostato questi ho solo modifiche in tutto l'intero griglia di widget di piuttosto che all'interno.

Come posso impostare questo (con un foglio di stile, o le opzioni hard-coded) direttamente per rendere il display più stretto QTableWidget?

È stato utile?

Soluzione

Il codice di ottenere 'h' potrebbe essere infondata. E 'stato solo un esempio. Copia & incolla il seguente codice piuttosto rudimentale. Modificare il valore in "setDefaultSectionSize ()", ricompilazione, ed eseguire. Si dovrebbe vedere la differenza. L'impostazione di questo a 10 o 50 produce risultati visibili. Nel codice di cui sopra, è possibile QFontMetrics o QFont è in disordine qualcosa.

È possibile utilizzare quello che vuoi per ottenere l'altezza, ma la dimensione del carattere rende più senso.

#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();
}

EDIT: Non so come formattare un blocco di codice qui ... perdonami. :)

Modifica 2 : mi fisso che, e il seguente file tighterTable.pro semplice aiuta lungo.

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

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

Grazie un grosso mazzo di grasso per questo. BTW:. Editing come codice è solo indentandoli con quattro spazi, e / o premendo il pulsante con la piccola '101010' nella riga formattazione

Altri suggerimenti

Che cosa stai cercando ha una soluzione IMHO molto stupido, ma funziona. È necessario impostare defaultSectionSize le intestazioni () membri. Si accede tramite verticalHeader () e horizontalHeader (). Non ho mai veramente impostare la colonna di larghezza di w / questo b / c maggior parte dei miei progetti mi coinvolgono l'aggiunta di righe, non colonne, e mi basta chiamare resizeColumnsToContents o fare un ridimensionamento manuale. Tuttavia, le righe è fastidioso. Io generalmente ottenere l'altezza del font utilizzando QFontMetrics, e aggiungi 2. Qualsiasi successiva riga aggiunta dovrebbe avere questa altezza, e viola: più stretta look.

La speranza che aiuta.

Modifica

codice non testato:

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

QTableWidget è un modello di convenienza e vista. Tipicamente, metodo data () del QAbstractItemModel fornisce un SizeHintRole utilizzata per dire la vista che taglia ogni cella dovrebbe essere.

Dal momento che si sta utilizzando QTableWidget, non credo che ci sia qualcosa che si può fare per cambiare il suggerimento dimensione di essere restituito dal suo modello interno. Anche il Qt stile documentazione foglio menziona nulla in quella zona.

QTableWidget -> verticalHeader -.> SetMinimumSectionSize () è la strada giusta, e può essere impostato in ui

Ho provato tutte le risposte qui senza successo. Che cosa ha funzionato per me però è stata l'impostazione sia di seguito.

    table->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents)
    table->verticalHeader()->setMaximumSectionSize(10)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top