Domanda

Ho bisogno di un pulsante / link all'interno di una riga della tabella di un QTableView. Questo è quello di aprire una finestra di dialogo per consentire quella riga da modificare in modo più efficiente.

Dopo ore di ricerca sul web sono ancora trovare un esempio decente.

Mi rendo conto che questo è probabile che essere fatto utilizzando un QItemDelegate, ma non sono sicuro come avere un widget funzionale all'interno della riga senza forzare la voce in modalità di modifica prima.

Qualsiasi aiuto sarebbe molto apprezzato.

È stato utile?

Soluzione

Si potrebbe emulare la funzionalità di un collegamento sottolineando il testo cliccabile, quindi catturare lo scatto delle cellule via il (, fila col) del segnale cellClicked e controllare che col == editColumn. Poi fila corrisponderebbe esattamente il punto che si sta modificando.

Ad esempio,

Nome dei 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);
  }
}

Altri suggerimenti

È possibile utilizzare setIndexWidget per questo, vedere la Qt documentazione 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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top