0

システムキーボードにアクセスできないアプリケーションを設計しています (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 は問題なく動作しますが、矢印と Enter は動作しません。次のような同じメカニズムを使用しています。

------------------------------- ----------------- 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);
}

残念ながら無反応。

明確にするために、以下にアルゴリズムを投稿しました。

ここに画像の説明を入力

4

0 に答える 0