Для обхода элементов формы используется клавиша <Enter>.
Обратный обход происходит при зажатой клавише <Alt>.
Для этого переопределен метод keyPressEvent().
C++ (Qt)
if ( ( event->modifiers() == Qt::AltModifier ) &&
((event->key()==Qt::Key_Enter)||(event->key()==Qt::Key_Return)) ){
//this->focusNextPrevChild(false);
QCoreApplication::sendEvent(this,new QKeyEvent(QEvent::KeyPress,Qt::Key_Tab,Qt::ShiftModifier));
qDebug("alt return pressed");
} else /*if ( event->modifiers() == Qt::NoModifier )*/ {
if ((event->key()==Qt::Key_Enter)||(event->key()==Qt::Key_Return)){
//this->focusNextPrevChild(true);
QCoreApplication::sendEvent(this,new QKeyEvent(QEvent::KeyPress,Qt::Key_Tab,Qt::NoModifier));
qDebug("return pressed");
}
}
По обоим энтерам происходит передача фокуса к следующему элементу формы.
Если зажат <Alt> и нажимается <Enter> на буквенной клавиатуре то происходит передача фокуса предыдущему элементу формы. Но если нажимается <Enter> на нумпаде, то фокус передается к следующему элементу формы, независимо от нажатия клавиши <Alt>.
Почему так происходит и как это устранить.