voglio la dimensione del QTableView essere la stessa della tabella che contiene (e fisso) in modo che non ha una barra di scorrimentoCome faccio a ridimensionare QTableView in modo che la zona non viene fatto scorrere più
risposta
Quello che potrebbe fare è calcolare le larghezze delle colonne della vista tabella in base ai dati che hanno (oppure è possibile chiamare resizeColumnToContents per ogni colonna per ridimensionare il contenuto). Quindi modifica la larghezza della vista tabella per essere uguale o superiore alla larghezza totale delle colonne + intestazione verticale, se mostrato. Dovresti anche monitorare le modifiche del modello e regolare la larghezza della tua vista tabella + se viene mostrata l'intestazione orizzontale, puoi tracciare le colonne ridimensionando gli eventi e regolandoli di nuovo. Qui di seguito alcuni esempi di codice per questo:
inizializzazione:
// add 3 columns to the tableview control
tableModel->insertColumn(0, QModelIndex());
tableModel->insertColumn(1, QModelIndex());
tableModel->insertColumn(2, QModelIndex());
...
// switch off horizonatal scrollbar; though this is not really needed here
ui->tableView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
// adjust size; see code below
adjustTableSize();
// connect to the horizontal header resize event (non needed if header is not shown)
connect(ui->tableView->horizontalHeader(),SIGNAL(sectionResized(int,int,int)), this,
SLOT(updateSectionWidth(int,int,int)));
// connect to the model's datachange event
connect(ui->tableView->model(), SIGNAL(dataChanged(QModelIndex,QModelIndex)),
this, SLOT(dataChanged(QModelIndex,QModelIndex)));
regolare dimensioni Tableview:
void MainWindow::adjustTableSize()
{
ui->tableView->resizeColumnToContents(0);
ui->tableView->resizeColumnToContents(1);
ui->tableView->resizeColumnToContents(2);
QRect rect = ui->tableView->geometry();
rect.setWidth(2 + ui->tableView->verticalHeader()->width() +
ui->tableView->columnWidth(0) + ui->tableView->columnWidth(1) + ui->tableView->columnWidth(2));
ui->tableView->setGeometry(rect);
}
cambio di modello di processo
void MainWindow::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
{
adjustTableSize();
}
processo intestazione orizzontale ridimensionare
void MainWindow::updateSectionWidth(int logicalIndex, int, int newSize)
{
adjustTableSize();
}
speranza che questo aiuti, riguarda
thx ma ero già in grado di farlo. L'unico problema qui è che è necessario prendere in considerazione la dimensione del bordo. Inoltre c'è qualcosa di sbagliato nei metodi width() e height() del curatore verticale. Il metodo di larghezza dà un valore di 0 e l'altezza mi ha dato qualcosa come 259, che era troppo grande. –
l'intestazione orizzontale si spinge comunque buoni valori. –
Allo stesso modo, è possibile utilizzare la funzione 'QHeaderView :: length()': 'viewRect.setWidth (customsItemsView-> horizontalHeader() -> length());' che sembra funzionare per me. –
sum(item.sizeHint()+headeroffset+border)
non funziona bene per me, probabilmente c'è la spaziatura tra gli elementi, anche se griglia è spento. Quindi ho apportato le modifiche in questo modo:
view->resizeRowsToContents();
view->resizeColumnsToContents();
QAbstractItemModel* model = view->model();
QHeaderView* horHeader = view->horizontalHeader();
QHeaderView* verHeader = view->verticalHeader();
int rows = model->rowCount();
int cols = model->columnCount();
int x = horHeader->sectionViewportPosition(cols-1) + horHeader->offset()
+ horHeader->sectionSize(cols-1) + 1;
int y = verHeader->sectionViewportPosition(rows-1) + verHeader->offset()
+ verHeader->sectionSize(rows-1) + 1;
QPoint p = view->viewport()->mapToParent(QPoint(x,y));
QRect g = view->geometry();
g.setSize(QSize(p.x(),p.y()));
view->setGeometry(g);
Dovrebbe funzionare se l'ultima colonna e l'ultima riga sono visibili.
Ho provato la risposta serge_gubenko ma non ho funzionato per me (in parte perché volevo ridimensionare sia l'altezza che la larghezza) ... quindi l'ho modificato; Per evitare il tavolo di essere ridimensionata layout o widget genitore avrete bisogno di questo:
ui->tableView->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Fixed);
Poi:
ui->tableView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
ui->tableView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
QRect rect = ui->tableView->geometry();
int width = 2,length = 2;
for(int col = 0;col<proxySortModel->columnCount();++col){
if(!ui->tableView->isColumnHidden(col))
width += ui->tableView->columnWidth(col);
}
for(int row =0;row<proxySortModel->rowCount();++row)
length += ui->tableView->rowHeight(row);
rect.setWidth(width);
rect.setHeight(length);
ui->tableView->setGeometry(rect);
Spero che questo aiuta qualcuno.
- 1. UITextView non mostra fino a che non viene fatto scorrere
- 2. Come rilevare quando uno switch viene fatto scorrere, non fatto clic
- 3. Come faccio a ridimensionare un controllo personalizzato che ho costruito
- 4. Come faccio a far scorrere un tavolo
- 5. Come faccio a sapere che il columnizing è fatto?
- 6. QTableView scorrere fino alla riga aggiunta nuova
- 7. Come faccio a forzare JScrollPane a scorrere solo in verticale?
- 8. Come faccio a fare in modo che la mia parola riordinatore restituisca risultati più pertinenti
- 9. C# Come faccio a scorrere il registro?
- 10. Ridimensionare un poligono in modo che i bordi corrispondano a
- 11. Come viene fatto un merge in JGit?
- 12. In CSS, come ridimensionare più immagini sovrapposte in modo reattivo?
- 13. Come faccio a scorrere l'alfabeto in Python, per favore?
- 14. Come faccio a scorrere un oggetto SimpleXML in PHP
- 15. Come faccio a ridimensionare la mia visione di immagini all'interno della mia vista a scorrimento come è fatto in questa immagine?
- 16. Come viene implementato "fornito" in un fatto a Midje?
- 17. Come faccio a scorrere i tag in un messaggio jekyll?
- 18. Che danno viene fatto da document.write()?
- 19. Come faccio a scorrere le tuple degli elementi di due o più liste in Python?
- 20. Come faccio a scorrere gli oggetti figli in javascript?
- 21. Come faccio a localizzare l'iPhone in modo più efficiente che lasciare il GPS tutto il tempo?
- 22. come faccio a scorrere le proprietà interne in C#
- 23. Come faccio a scorrere questo oggetto JSON in jQuery?
- 24. jQuery: come faccio a scorrere tutti gli elementi 'a'?
- 25. Come viene implementato LongAccumulator, in modo che sia più efficiente?
- 26. Come faccio a smettere di scorrere automaticamente nel mio flexslider
- 27. Come faccio a far scorrere UIWebView verso l'alto?
- 28. Come posso ridimensionare il mio modulo in modo più fluido?
- 29. On rendere nel Html2Canvas, la pagina viene fatto scorrere verso l'alto
- 30. Android - Come faccio a far scorrere questo messaggio di avviso?
Sono sorpreso che non ci sia un metodo integrato per farlo in una riga. Ancora niente dal '09? Sembra qualcosa che dovrebbe essere importante quanto 'resizeColumnsToContents()', che esiste già. – neuronet