QTableWidget: Come posso ottenere linee più strette con imbottitura spaziatura verticale meno?
-
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?
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)