2013-03-28 30 views
6

Mam MainWindow z QToolbar, QWidget i QTabWidget. Układ to "Grid". Jednak moje okno ma możliwość zmiany rozmiaru, a ponieważ mam układ, działa dobrze. Ale jest jeden problem, w moim QTabWidget Mam QTableWidget z dwiema kolumnami (układ jest również "Siatka"). Jeśli zmieniam rozmiar całego okna, zmieniany jest rozmiar QTableWidget, ale nie kolumny.Qt QTableWidget Kolumna zmiany rozmiaru

Na przykład Ilekroć rozmiaru mojego okna, moi QTabWidget zmianę rozmiaru i QTableWidget w nim też. Tylko kolumny w moim QTableWidget nie będą.

Więc ... jak mogę zmienić ich rozmiar, jeśli zmieni się mój QTableWidget?

Odpowiedz

9
  1. zmienić ResizeMode z QHeaderView. Na przykład, użyj:

horizontalHeader()->setResizeMode(0, QHeaderView::Stretch); 

aby pierwsza kolumna rozmiaru więc QTableWidget jest zawsze pełne.


  1. zmieniane niezależnie od resizeEvent i ustawienie szerokości każdej kolumnie samemu gdy QTableWidget został zmieniony.
+0

W których funkcja nie Ustawiłem poziomicę? –

+1

"Tabele mogą mieć zarówno nagłówki poziome, jak i pionowe. Najprostszym sposobem utworzenia nagłówków jest dostarczenie listy ciągów do funkcji setHorizontalHeaderLabels() i setVerticalHeaderLabels()." [dane QTableWidget] Patrz (http://qt-project.org/doc/qt-4.8/qtablewidget.html#details) dla tego – PrisonMonkeys

+0

w QT5: horizontalHeader() -> setResizeMode (0 QHeaderView :: stretch); – fantastory

0

Jeśli chcesz zmienić rozmiar tylko ostatnia kolumna:

ui->tableWidget->horizontalHeader()->setStretchLastSection(1); 
0

W Qt5 trzeba użyć setSectionResizeMode zamiast setResizeMode

QTableWidget* myTable = new QTableWidet; 
QHeaderView* header = myTable->horizontalHeader(); 
header->setSectionResizeMode(QHeaderView::Stretch); 
9
  1. Aby rozciągnąć ostatnią kolumnę:

    ui->tableWidget->horizontalHeader()->setStretchLastSection(true); 
    
  2. Aby rozciągnąć kolumny #n:

    ui->tableWidget->horizontalHeader()->setSectionResizeMode(n, QHeaderView::Stretch); 
    
+0

Mężczyzna powiedział – sami1592

4
ui->mytable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); 
+2

Unikaj odpowiedzi tylko na kod, zwykle są one oznaczone jako niskiej jakości i usunięte. Postaraj się włożyć trochę wysiłku w swoje odpowiedzi i wyjaśnij, co robi kod i jak zastosuje się do pierwotnego pytania. –

+1

@Tim chciałbym, aby był to jeden z automatycznie generowanych komentarzy – Gary

1

Najlepszym rozwiązaniem dla tego, w Qt5 trzeba użyć setSectionResizeMode zamiast setResizeMode

tabv = QTableView() 
tabv.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) 
Powiązane problemy