2010-03-09 23 views
6

Estoy teniendo un QTableView que ha de datos cargado con un QStandardItemModel en formaConfiguración Orden de tabulación para QTableView en Qt 4.4

Parameter Value 

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

ahora tengo que establecer la propiedad de orden de tabulación de tal manera que yo pueda atravesar solo a través de los valores y no de los parámetros. es decir, cuando el control está en 0.456 y si presiono la tecla 'Tab', tiene que ir a 0.123 y no a X2 (el comportamiento predeterminado). Además, el parámetro de columna tiene activados Edt y solo puedo cambiar los valores.

Sé QWidget :: setTabOrder (QWidget *, QWidget *) pero desde que estoy configurando los datos a través de QStandardItemModel ¿cómo puedo obtener el orden de Tab deseado en QTableView? Estoy usando Qt 4.4 y Windows XP. Además, no usé el diseñador de Qt para diseñar los elementos de la interfaz de usuario. Todo es solo por código.

Respuesta

2

Subclase QTableView y anulación keyPressEvent. Compruebe la clave de tabulación en el evento, llame a la implementación base de lo contrario. Obtenga el índice seleccionado actualmente del modelo de selección de la vista. Establezca el activador de edición de la vista en CurrentChanged o instale su propio QItemDelegate para el control manual.

2

En realidad, keyPressEvent no se emite cuando se está editando, en su lugar, tiene que volver a aplicar closeEditor y verificar la pista. Si la sugerencia es QAbstractItemDelegate :: EditNextItem, cambie el selectionModel :: currentIndex y use use QTableView :: edit.

La otra solución sólo funciona cuando no se está editando, pero de todos modos me dio un punto de partida, así que estoy dando la generosidad

+0

Esto también podría ser de ayuda: [personalizar el comportamiento de edición qtableview] (http : //www.hardcoded.net/articles/how-to-customize-qtableview-editing-behavior.htm) –

Cuestiones relacionadas