2013-10-18 14 views

risposta

8

Ecco un esempio di come è possibile ottenere, ad esempio, il testo della cella della tabella quando si fa clic su di esso. Supponiamo che un QTableView sia definito in alcune classi MyClass. È necessario installare il collegamento di clicked (è possibile utilizzare anche doubleClicked, pressed e altri segnali troppo, a seconda del vostro obiettivo) del segnale e realizzare il corrispondente onTableClicked() slot per esso, come illustrato di seguito: implementazione

connect(tableView, SIGNAL(clicked(const QModelIndex &)), this, SLOT(onTableClicked(const QModelIndex &)); 

Slot:

void MyClass::onTableClicked(const QModelIndex &index) 
{ 
    if (index.isValid()) { 
     QString cellText = index.data().toString();   
    } 
} 
+0

L'esempio sopra riportato funziona bene grazie per aver fornito la soluzione – ShivaPrasad

+0

@vahancho puoi dirmi qual è la differenza tra clic (const QModelIndex &) e cellClicked (int row, int column)? Perché non può esserci una singola API? –

+1

@XavierGeoffrey, la differenza è che questi segnali sono dichiarati in diverse classi: 'QAbstractItemView :: clicked()' e 'QTableWidget :: cellClicked()' rispettivamente. Il primo segnale può essere utilizzato in tutte le classi di visualizzazione delle voci come treeview, tableview, listview, mentre il secondo solo per i widget di tabella. Anche gli argomenti sono diversi: a volte è molto più comodo passare un indice del modello che una riga e una colonna, specialmente per le treeview, dove c'è anche un genitore. – vahancho