0

SBC6000x ボードで Qt アプリケーション (Qt バージョン 4.7.3) を開発しています。タッチスクリーンに tslib を使用しています。

同じ場所に2つのボタンがある2つの画面があります。1画面目のボタンをクリック(タッチ)すると2画面目に遷移します。最初の画面でボタンをダブルタップすると、2 つのタッチ イベントが登録されます。1回目のタッチで第2画面へ、2回目のタッチで第2画面で処理され第3画面が表示されます。

そのため、1 番目の画面をダブルタップすると、3 番目の画面に直接ジャンプします。このセカンドタッチを禁止したい。

ここに私が試したものがあります。

  1. tslib でデバウンス時間の変更を探しましたが、十分な情報が得られませんでした。
  2. 2 番目の画面のボタンを無効にし、画面が読み込まれたときに有効にします。

2番目のアプローチの問題:実行時に画面を作成していません。画面の配列があります。show() メソッドでボタンを有効にすると、どこかで無効にする必要があります。どの方法でそれらを無効にする必要がありますか?

2 番目の画面を表示している間、1 番目の画面で close() または hide() を呼び出していません。2 番目の画面には show() のみを呼び出しています。したがって、closeEvent または hideEvent() でボタンを無効にすることはできません (これらのメソッドがまったくないため) 。

どうすればこれを処理できますか? どんな助けでも大歓迎です。

4

2 に答える 2

0

Qt のイベント システムを使用する必要があります。これにより、発生しているイベント (タップなど) を追跡し、カスタム動作の既定の動作をオーバーライドできます。範囲がかなり広いため、多くの情報を提供するのは困難ですが、タッチ固有のイベントがないため、マウス イベントからのボタン クリックがどのように処理されているかを確認する必要がある可能性があります。

于 2013-01-11T10:49:51.903 に答える
0

ボタンがクリックされるmyScreen->show()と、カスタム メソッドを呼び出す代わりに、次のmyScreen->showWithDelayedButton()ような処理を行います。

MyScreen::showWithDelayedButton() {
    myButton->hide();
    QTimer::singleShot(250, myButton, SLOT(show));
    show();
}
于 2017-01-06T10:23:50.393 に答える