2010-12-10 17 views
20

Richiedo la possibilità di avere un pulsante/collegamento all'interno di una riga della tabella di QTableView. Questo per aprire una finestra di dialogo per consentire la modifica di quella riga in modo più efficiente.Qt - QTableView - Pulsante cliccabile nella riga della tabella

Dopo ore di guardare sul web, devo ancora trovare un esempio decente.

Sono consapevole che è probabile che ciò avvenga utilizzando lo QItemDelegate, ma non sono sicuro di come avere un widget funzionale all'interno della riga senza forzare prima l'elemento in modalità di modifica.

Qualsiasi aiuto sarebbe molto apprezzato.

+0

Che cosa si intende dicendo "pulsante nella riga della tabella"? Tutta la fila? O in una singola cella? –

risposta

1

Si potrebbe emulare le funzionalità di un collegamento sottolineando testo selezionabile, allora catturando il cellulare clicca sul segnale cellClicked (row, col) e controlla col == editColumn. Quindi la riga corrisponderebbe all'elemento che stai modificando.

Ad esempio,

Nome dati | Valore 1 | Valore 2 | Modifica

connect (tableWidget, SIGNAL(cellClicked(int,int)), this, SLOT(editSlot(int, int))); 

... 

void ClassName::editSlot(int row, int col){ 
    if (col == 3) { 
    doWork(row); 
    } 
} 
+0

Perché la risposta accettata invariabilmente fallisce nel rispondere effettivamente alla domanda? La definizione di una nuova connessione signal-slot semplicemente per aggiungere un singolo pulsante statico o un collegamento a un elemento di tabella al momento della definizione della tabella è priva di senso. Onestamente, StackOverflow dovrebbe semplicemente essere impostato in modo predefinito per contrassegnare in modo dinamico la risposta che attualmente riceve i maggiori uptotes come "accettata". –

20

È possibile utilizzare setIndexWidget per questo, vedere Qt documentation per ulteriori informazioni.

Ad esempio, per incorporare un pulsante nella prima colonna della seconda riga (codice non testato):

tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton); 
+1

Ho letto che su dataset di grandi dimensioni, l'impostazione di un widget a livello di riga può comportare una notevole perdita di prestazioni. – cweston

Problemi correlati