Qt 6.11 is out! See what's new in the release
blog
Problem QKeyEvent
-
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.