2010-03-09 9 views
6

Sto avendo un QTableView che ha i dati caricato con un QStandardItemModel in formaImpostazione Ordine di tabulazione per QTableView in Qt 4.4

Parameter Value 

    X1   0.456 
    X2   0.123 
.... and so on. 

Ora devo impostare la proprietà Ordine di tabulazione in modo che io possa attraversare solo attraverso i valori e non i parametri. quando il controllo è su 0.456 e se premo il tasto 'Tab', deve andare a 0.123 e non a X2 (il comportamento predefinito). Anche la colonna Parameter ha disabilitato Edt Trigger e posso solo modificare i valori.

Conosco QWidget :: setTabOrder (QWidget *, QWidget *) ma dal momento che sto impostando i dati tramite QStandardItemModel come posso ottenere l'ordine Tab desiderato in QTableView? Sto usando Qt 4.4 e Windows XP. Inoltre non ho usato la progettazione Qt per progettare gli elementi dell'interfaccia utente. Tutto è solo attraverso il codice.

risposta

2

Sottoclasse QTableView e override keyPressEvent. Controlla il tasto tab nell'evento, altrimenti chiama l'implementazione base. Ottieni l'indice attualmente selezionato dal modello di selezione della vista. Imposta l'edittrigger della vista su CurrentChanged, oppure metti il ​​tuo QItemDelegate per il controllo manuale.

2

In realtà il keyPressEvent non viene emesso durante la modifica, ma è necessario reimplementare closeEditor e controllare il suggerimento. Se il suggerimento è QAbstractItemDelegate :: EditNextItem, modificare selectionModel :: currentIndex e utilizzare use QTableView :: edit.

L'altra soluzione funziona solo quando non si modifica, ma comunque mi ha dato un punto di partenza quindi mi sto dando la bontà

+0

Questo potrebbe anche essere di aiuto: [personalizzare il comportamento di modifica qtableview] (http : //www.hardcoded.net/articles/how-to-customize-qtableview-editing-behavior.htm) –

Problemi correlati