2010-03-09 8 views
6

ich ein QTableView habe, die Daten mit einem QStandardItemModel in Form nun geladen istEinstellung Tab-Reihenfolge für QTableView in Qt 4.4

Parameter Value 

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

i die Tab-Order-Eigenschaft so eingestellt haben, dass ich durchqueren können nur durch die Werte und nicht die Parameter. Wenn das Steuerelement auf 0,456 steht und ich die Tabulatortaste drücke, muss es auf 0,123 und nicht auf X2 (das Standardverhalten) gehen. Auch die Spalte Parameter hat Edt Trigger deaktiviert und ich kann nur die Werte ändern.

Ich kenne QWidget :: setTabOrder (QWidget *, QWidget *) aber da ich die Daten über QStandardItemModel setze, wie kann ich die gewünschte Tab-Reihenfolge in QTableView erreichen? Ich benutze Qt 4.4 und Windows XP. Auch ich habe nicht Qt-Designer verwendet, um die UI-Elemente zu entwerfen. Alles ist nur durch Code möglich.

Antwort

2

Unterklasse QTableView und override keyPressEvent. Suchen Sie im Ereignis nach der Tabulatortaste, rufen Sie andernfalls die Basisimplementierung auf. Ruft den aktuell ausgewählten Index aus dem Auswahlmodell der Ansicht ab. Setzen Sie den Edittrigger der Ansicht auf CurrentChanged, oder legen Sie ein eigenes QItemDelegate für die manuelle Steuerung an.

2

Tatsächlich wird das keyPressEvent nicht ausgegeben, wenn Sie bearbeiten, stattdessen müssen Sie closeEditor neu implementieren und nach dem Hinweis suchen. Wenn der Hinweis QAbstractItemDelegate :: EditNextItem lautet, ändern Sie den Parameter selectionModel :: currentIndex und verwenden Sie QTableView :: edit.

Die andere Lösung funktioniert nur, wenn Sie nicht bearbeiten, aber trotzdem gab es mir einen Ausgangspunkt, so dass es die Prämie Ich gebe

+0

Dies auch hilfreich sein könnte: [anpassen QTableView Verhalten Bearbeitung] (http : //www.hardcoded.net/articles/how-to-customize-qtableview-editing-behavior.htm) –

Verwandte Themen