2010-02-01 7 views
7

The QTableWdiget jest fantastyczny dla prostych wyświetlaczy siatki. Zmiana kolorów, czcionek itp. Jest prosta.QTableWidget: Jak uzyskać ściślejsze linie z mniejszym odstępem w pionie?

Jednak nie udało mi się dać siatkę a „mocniej” wyglądać mniej pionowym spacji. Widzę, że rozmowy dokumentacji Qt (np here) o

  • margines
  • granica
  • wyściółka

wokół widżety, ale kiedy ustawić je uzyskać jedynie zmiany wokół cała widget siatki zamiast w środku.

Jak mogę ustawić to (z arkusza stylów lub zakodowane opcje) bezpośrednio do uczynienia wyświetlacz QTableWidget mocniej?

Odpowiedz

5

Kod coraz 'h' może być niezdrowe. To był tylko przykład. Skopiuj kod & wklej następujący kod podstawowy. Zmień wartość w "setDefaultSectionSize()", przekompiluj i uruchom. Powinieneś zobaczyć różnicę. Ustawienie tego na 10 lub 50 daje widoczne wyniki. W powyższym kodzie jest możliwe, że QFontMetrics lub QFont coś zepsuje.

Można użyć co chcesz uzyskać wysokość, ale rozmiar czcionki największy sens.

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

EDYCJA: Nie wiem jak sformatować blok kodu tutaj ... wybacz mi. :)

Edytuj 2: Naprawiłem to i następujący prosty plik tighterTable.pro pomaga.

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

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

Dziękuję za to dużej ilości tłuszczu.BTW: Edycja jako kod jest wcięciem o cztery spacje i/lub naciśnięciem przycisku z małym "101010" w rzędzie formatowania.

3

QTableWidget to model wygoda i widok. Zwykle metoda data() QAbstractItemModel zapewnia SizeHintRole, która jest używana do informowania widoku, jaki powinien być rozmiar każdej komórki.

Ponieważ używasz QTableWidget, nie sądzę, że istnieje coś, co można zrobić, aby zmienić rozmiar podpowiedź zwracanych przez swojego modelu wewnętrznego. Nawet Qt style sheet documentation nic nie wspomina w tym obszarze.

+0

Cześć Kaleb, doceniam odpowiedź - mniej więcej dotarłem do podobnego wniosku ("po prostu nie mogę tego zrobić"), ale dobrze jest mieć drugą parę oczu w tej sprawie. –

5

Co szukasz ma rozwiązanie bardzo głupie IMHO, ale to działa. Musisz ustawić domyślne elementy nagłówków "defaultSectionSize()". Dostęp przez verticalHeader() & horizontalHeader(). Nigdy tak naprawdę nie ustawiłem szerokości kolumny w/tym b/c większość moich projektów wymaga dodania wierszy, a nie kolumn, i po prostu wywołuję resizeColumnsToContents lub ręcznie zmieniam rozmiar. Jednak rzędy są uciążliwe. Zwykle uzyskuję wysokość czcionki za pomocą QFontMetrics i dodaje 2. Każdy kolejny dodany wiersz powinien mieć taką wysokość, a viola: bardziej zwięzły wygląd.

Nadzieję, że pomaga.

EDIT:

kod Nietestowane:

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

Paul, nie mogę dostać się do pracy. Otrzymuję 'fm' i' h' i mogę ustawić, ale tabela nie zmienia wyglądu. Nie ma również znaczenia, czy usuwam wiersze i dodam nowe - wszystkie mają dodatkowo trochę pionowego odstępu. –

+0

To działa! Wysokość wiersza jest zmieniana w QTableWidget. – Zmey

0

QTableWidget -> verticalHeader -> setMinimumSectionSize() to właściwa metoda, którą można ustawić w interfejsie użytkownika.

Powiązane problemy