Не генерирует некоторые ключи [QKeyEvent]
Я разрабатываю приложение, в котором у меня не будет доступа к системной клавиатуре (пишу под Debian). Именно для этой клавиатуры монитор подключен через RS232. Кнопки должны выдавать клавиши Tab, Backtab, стрелки и Enter. В классе основного диалога я излучаю сигналы соответствующих кнопок, т.е.
if (key == KEY_TAB)
{
emit KeyPressTab ();
}
Этот сигнал фиксируется в различных диалоговых окнах с помощью вызова:
QObject :: connect (mainwindow, SIGNAL (KeyPressTab ()), this, SLOT (OnKeyPressTab ()));
В свою очередь, такой же функциональный слот имеет вид:
void SecondDialog :: OnKeyPressTab ()
{
QKeyEvent event (QEvent :: KeyPress, Qt :: Key_Tab, Qt :: NoModifier);
QApplication :: sendEvent (this, & event);
}
Таким образом, табуляция и BackTab работают без проблем, но стрелка и ввод не работают. Я использую тот же механизм, такой как:
------------------------------- ----------------- Main Window ------------
if (key == KEY_LEFT)
emit KeyPressLeft ();
------------------------------- ----------------- Second Dialog-----------
QObject :: connect (mainwindow, SIGNAL (KeyPressLeft ()), this, SLOT (OnKeyPressLeft ()));
void SecondDialog:: OnKeyPressLeft ()
{
QKeyEvent event (QEvent::KeyPress, Qt::Key_left, Qt::NoModifier);
QApplication :: sendEvent (this, & event);
}
К сожалению, нет реакции.
Для пояснения я разместил алгоритм ниже.