Jestem nowy w QT i właśnie udało mi się wykonać pracę QTableView z moim modelem. Naprawiono 3 kolumny. Kiedy otwieram okno, wygląda dobrze, ale kiedy zmieniam rozmiar okna, rozmiar samego QTableView zostanie zmieniony, ale szerokość kolumn pozostanie taka sama. Czy jest jakiś wbudowany sposób, aby działał? Chcę, aby kolumny zmieniały rozmiar, aby pasowały do krawędzi QTableView, gdy każde okno zostanie zmienione.Kolumny automatycznie zmieniają rozmiar na QTableView
Odpowiedz
Istnieje flaga nagłówka, aby zapewnić, że ostatnia kolumna QTableView wypełni element nadrzędny w przypadku zmiany rozmiaru. Możesz ustawić go tak:
table_view->horizontalHeader()->setStretchLastSection(true);
Nie zmienia to jednak proporcjonalnie innych kolumn. Jeśli chcesz zrobić to równie dobrze, można obsługiwać go wewnątrz resizeEvent swojego rodzica wygląda następująco:
void QParent::resizeEvent(QResizeEvent *event) {
table_view->setColumnWidth(0, this->width()/3);
table_view->setColumnWidth(1, this->width()/3);
table_view->setColumnWidth(2, this->width()/3);
QMainWindow::resizeEvent(event);
}
klasa QParent jest podklasą QMainWindow.
Nie przetestowałem drugiej części, ale pierwsza zadziałała, chociaż zdecydowałem się uczynić okno nieosiągalnym (co było dla mnie bardziej sensowne). – khajvah
Aby ustawić proporcjonalne szerokości kolumn, najłatwiej było przesłonić parametr resizeEvent, jak pokazano, ale przez podklasę o QTableView, a nie o QMainWindow. – jtbr
Widgety QTableView, QTreeView i ich klasy pochodne (takie jak QTableWidget) mają te dwie użytecznych metod:
QHeaderView* horizontalHeader() const;
QHeaderView* verticalHeader() const;
Jeśli otwarte dokumentacji dla klasy QHeaderView znajdziesz metody skonfigurować wygląd i zachowanie nagłówek wiersza lub kolumny dla widoków elementów. Można rozwiązać problem przez jedną z następujących metod:
void QHeaderView::stretchLastSection(bool stretch)
Jak Davy Jones wymienione.Przykład:
QTableView *table = new QTableView(); table->horizontalHeader()->setStretchLastSection(true);
void QHeaderView::setResizeMode(ResizeMode mode)
Jak trybie można ustawić QHeaderView :: Stretch lub QHeaderView :: ResizeToContents.
Niestety ta metoda ma swoją wadę - po jej zastosowaniu nie będzie można ręcznie zmienić rozmiaru kolumn (lub wierszy) (w GUI) lub programowo.Przykład:
QTableView *table = new QTableView(); table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
Ten kod równie stretchs każdy kolumn, tak aby dopasować szerokość stołu.
table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
Docs:
- QHeaderView::setSectionResizeMode
- Zobacz rozmiaru tryby here.
Chcę cię teraz pocałować, żartuję ;-) .. Tak długo szukałem tej linii .. dziękuję –
Idealne ... To jest idealne rozwiązanie dla problemu rozciągania/skalowania TableView. Naprawdę dzięki los.. – Maxx
- 1. Granice automatycznie zmieniają się na UIScrollView z wstawkami zawartości
- 2. Napisy TLabel i TGroupbox Miganie zmieniają rozmiar
- 3. Migracje Laravel zmieniają domyślną wartość kolumny
- 4. Wykresy Google zmieniają rozmiar czcionki haxis
- 5. iskrzenie dlaczego kolumny zmieniają się na wartości zerowe true
- 6. sqlalchemy Integer rozmiar kolumny
- 7. HTML TextArea zmień rozmiar automatycznie
- 8. Wirtualna kolumna w QTableView?
- 9. Jak zrobić collectionViewCell rozmiar automatycznie tylko na wysokość?
- 10. Przeglądarka systemu Android automatycznie zmienia rozmiar tekstu
- 11. QTableView - nie zezwala użytkownikowi na edycję komórki
- 12. QTableView Powiększanie/pomniejszanie
- 13. Qt - Czyszczenie zawartości QTableView
- 14. Rozmiar czcionki dostosowany automatycznie do rozmiaru
- 15. Ukryj automatycznie wygenerowane kolumny w Gridview
- 16. DataGridView kolumna automatycznie dostosowuje szerokość i zmienia rozmiar
- 17. Jak zmienić rozmiar czcionki kolumny tabeli?
- 18. Jak uzyskać QTableView, aby wypełnić 100% szerokości?
- 19. PostgreSQL: optymalizacja kolumny rozmiar dla pól numerycznych
- 20. Jak ustawić rozmiar kolumny pliku csv?
- 21. Uzyskaj rozmiar okna terminala (wiersze/kolumny)
- 22. animować UIButton zmieniają
- 23. Jak zmienić tytuł nagłówka QTableView
- 24. PyQt - kolumna Checkboxes w QTableView
- 25. Qt Ukryj kolumnę w QTableView
- 26. Szyny: Automatycznie odświeżaj przeglądarkę, gdy zmieniają się pliki widoku (i powiązane)
- 27. Jak automatycznie zmienić rozmiar okna w JavaFx dla różnych rozdzielczości?
- 28. Automatycznie dopasuj rozmiar czcionki w mapie termicznej seaborn
- 29. Projekt "modelu" dla QTableView w PySide + SQLAlchemy.
- 30. Animacje CSS zmieniają szybkość klatek
Czy zawsze chcesz, aby szerokości kolumn były takie same?Jeśli nie, możesz rozciągnąć szerokość ostatniej kolumny, wywołując tabelkę-> horizontalHeader() -> setStretchLastSection (true); –