Bueno, pues no lo consigo.
He creado un delegado para las celdas.
En la función createEditor() he añadido el filtro de eventos:
Código C++:
Ver originalQWidget* MiDelegado::createEditor(QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index) const
{
const QAbstractItemModel* model = index.model();
if (!model)
{
return QStyledItemDelegate::createEditor(parent,option,index);
}
QLineEdit* miEditor = new QLineEdit(parent);
QRegExpValidator* validadorEdad = new QRegExpValidator(QRegExp("[0-9.,]{1,10}"),miEditor);
miEditor->setValidator(validadorEdad);
miEditor->setAlignment(Qt::AlignLeft);
miEditor->installEventFilter(filter);
return miEditor;
}
Pero ahora, cuando estoy con el filtro de eventos, veo que responde a todas las pulsaciones de teclas menos a la del tabulador, y ahí me he quedado...
Código C++:
Ver originalbool Filter::eventFilter(QObject *object, QEvent *event)
{
QLineEdit *editor = dynamic_cast<QLineEdit*>(object);
if (!editor)
{
return false;
}
if (event->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
qDebug()<<event->type();
if (keyEvent->key() == Qt::Key_Tab)
{
qDebug()<<"Tab";
//QModelIndex current = editor->parent()->objectName();
//qDebug()<<editor->parent()->objectName();
//qDebug()<<editor->parent()->objectName();
return true;
}
}
return false;
}
Es curioso porque es la única tecla que no considera