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.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.