Sono nuovo a QT e sono appena riuscito a far funzionare QTableView con il mio modello. Ha riparato 3 colonne. Quando apro una finestra, sembra ok ma quando ridimensiono la finestra, la stessa QTableView viene ridimensionata ma la larghezza delle colonne rimane la stessa. Esiste un modo integrato per farlo funzionare? Voglio ridimensionare le colonne per adattarle ai bordi di QTableView ogni volta che la finestra viene ridimensionata.Le colonne si ridimensionano automaticamente alla dimensione di QTableView
risposta
C'è un flag di intestazione per assicurare che l'ultima colonna di QTableView riempia il suo genitore se ridimensionata. È possibile impostarlo in questo modo:
table_view->horizontalHeader()->setStretchLastSection(true);
Tuttavia, ciò non ridimensiona proporzionalmente le altre colonne. Se si vuole fare anche questo, si potrebbe gestire all'interno della resizeEvent di un genitore nel seguente modo:
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);
}
classe QParent è sottoclasse di QMainWindow.
Non ho provato la seconda parte, ma la prima ha funzionato, anche se ho deciso di rendere la finestra non possibile (per me aveva più senso) – khajvah
Per impostare le larghezze delle colonne proporzionali, ho trovato più facile sovrascrivere resizeEvent come mostrato, ma per sottoclasse QTableView in questione, piuttosto che QMainWindow. – jtbr
Widget QTableView, QTreeView e le loro classi derivate (come QTableWidget) ha questo due metodi utili:
QHeaderView* horizontalHeader() const;
QHeaderView* verticalHeader() const;
Se la documentazione aperta per una classe QHeaderView, troverete i metodi che si insediano aspetto e il comportamento di intestazione di riga o di colonna per le viste degli articoli. È possibile risolvere il problema con uno dei seguenti metodi:
void QHeaderView::stretchLastSection(bool stretch)
Come Davy Jones menzionato.Esempio:
QTableView *table = new QTableView(); table->horizontalHeader()->setStretchLastSection(true);
void QHeaderView::setResizeMode(ResizeMode mode)
Come modalità è possibile impostare QHeaderView :: Stretch o QHeaderView :: ResizeToContents.
Sfortunatamente questo metodo ha uno svantaggio: una volta applicato, non sarà possibile modificare manualmente le dimensioni delle colonne (o delle righe) (in GUI) o in modo programmatico.Esempio:
QTableView *table = new QTableView(); table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
Questo codice stretchs ugualmente ogni colonna in modo che si adattino larghezza della tabella.
table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
Documenti:
- QHeaderView::setSectionResizeMode
- Vedi ridimensionare modalità here.
Voglio baciarti adesso, sto solo scherzando ;-) .. Ho cercato così tanto tempo per questa linea .. grazie –
Perfetto ... Questa è la soluzione perfetta per il problema di allungamento/ridimensionamento di TableView .. Davvero grazie a molto .. – Maxx
- 1. (Java LibGDX) Come si ridimensionano le mie trame in LibGDX?
- 2. Adattamento delle colonne in QTableView
- 3. DataGridView genera automaticamente le colonne
- 4. gridster, come adattarsi automaticamente alla modifica della dimensione del browser?
- 5. wxpython: ridimensiona automaticamente un'immagine statica (staticbitmap) per adattarla alla dimensione
- 6. Excel: come montare automaticamente le colonne all'avvio?
- 7. QTableView scorrere fino alla riga aggiunta nuova
- 8. Come si crea una tabella di larghezza del 100% con le colonne di uguale larghezza?
- 9. Come assicurarsi che le colonne in QTableView vengano ridimensionate al massimo
- 10. Quale algoritmo utilizzano comunemente i browser quando si ridimensionano le immagini con i CSS?
- 11. Abbina automaticamente le colonne in INSERT INTO ... SELECT ... FROM
- 12. Come si regola automaticamente la dimensione di un QDialog in base alla lunghezza del testo di uno dei suoi figli?
- 13. Come si sommano le colonne nell'elenco 2D?
- 14. Indice tutte le colonne
- 15. Aggiungi automaticamente nuova riga alla tabella quando si modifica l'ultima
- 16. Come nascondere colonne generate automaticamente in DataGrid?
- 17. Copia di parte di QTableView
- 18. Come impedire all'utente di ridimensionare le colonne di QTableWidget?
- 19. LayoutManager per RecyclerView per impostare automaticamente il numero di colonne in base alla larghezza degli articoli
- 20. extjs4 come impostare automaticamente la larghezza della colonna della griglia alla larghezza massima del contenuto?
- 21. La dimensione del carattere * è uguale alla dimensione di int *?
- 22. QTableWidget vs QTableView
- 23. QTableView Zoom avanti/indietro
- 24. Come si confrontano le colonne di record della stessa tabella?
- 25. Colonna virtuale in QTableView?
- 26. Problema nell'adattare la dimensione della cella excel alla dimensione del contenuto quando si utilizza apache poi
- 27. Scala CCSprite alla dimensione esatta
- 28. QTableView in MainWindow e tabulazione
- 29. Mantieni colonne di bootstrap nella stessa riga quando si modifica la dimensione
- 30. Leaflet: modifica popup alla dimensione dell'immagine
Vuoi sempre che le larghezze delle colonne siano le stesse?In caso contrario, puoi allungare la larghezza dell'ultima colonna chiamando table-> horizontalHeader() -> setStretchLastSection (true); –