Problem QKeyEvent
Unsolved
Polish
-
Witam,
Projektuję aplikację pod Debianem, gdzie na docelowym urządzeniu nie będę miał dostępu do klawiatury systemowej. Jest za to panel przycisków monitora podłączonych przez RS232. Kwestia odbioru danych w osobnym procesie jest opanowana. Przyciski mają symulować klawisze Tab, BackTab, Strzałki i Enter.
W klasie głównego okna dialogowego robię emit sygnałów odpowiednich przycisków, tj.if(key == KEY_TAB) { emit KeyPressTab(); }
Sygnał ten jest przechwytywany w poszczególnych oknach dialogowych za pomocą połączenia:
QObject::connect(mainWindow, SIGNAL(KeyPressTab()), this, SLOT(OnKeyPressTab()));
Z kolei sama funkcja slotu to:
void DialogBoczny::OnKeyPressTab() { QKeyEvent event(QEvent::KeyPress, Qt::Key_Tab, Qt::NoModifier); QApplication::sendEvent( this, &event); }
Tym sposobem Tabulacja i BackTabulacja(Shift+Tab) działa bez problemu, ale strzałki i enter nie działają.
Korzystam z tego samego mechanizmu, np:-------------------------------Głowne Okno----------------------------- if(key == KEY_TAB) emit KeyPressLeft(); -------------------------------Dialog Boczny---------------------------- QObject::connect(mainWindow, SIGNAL(KeyPressLeft()), this, SLOT(OnKeyPressLeft())); void DialogBoczny::OnKeyPressLeft() { QKeyEvent event(QEvent::KeyPress, Qt::Key_Left, Qt::NoModifier); QApplication::sendEvent( this, &event); }
Niestety brak reakcji.
Proszę o pomoc.