2016-04-18 8 views
0

シナリオは以下の通りです: アクティブなウィジェットがQSpinBoxの場合、そのボックスの矢印をクリックするかクリックして値を変更できますまたは押すかページアップ/ページダウン/   ▲   /   ▼   を保持することもできます。アップ/ダウン(キーボード)を押しながらQSpinBoxのスクロールを遅らせるには

問題は、いくつかのミリ秒が必要なvalueChanged()です。 スクロールはここでは遅く(加速がオフ)ように見えるので、私はpermascroll(マウス)またはボックスの矢印をクリックして保持するが、私のキーボード(加速もオフ)を使用すると、scrollspeedタイミングの問題を引き起こすはるかに高速です。アプリケーションは遅くなり、イベントキューが終了するまで数秒間フリーズします。

キーボード入力を使用することを許可する必要があります(キーボードキーの保持を含む)ので、矢印/ページのキーの繰り返し速度を遅くする方法があるかどうかを知りたいと思います。

実際には、タイムアウト時にスピンボックスの値を渡す値が変更されたときに200ミリ秒オンショットタイマーをトリガーしています。タイマーは、実行されていない場合にのみトリガーされます。つまり、値を変更すると、常に200ミリ秒の遅延があり、更新頻度は5更新/秒またはそれ以下にしかなりません。実際には機能しますが、キーの繰り返しレートを何とか減らすことでこれを改善したいと思っています。

答えて

0

いいえいいえ問題があります。ここで問題となるのは、ボタンホールド時のキーボード返済文字です。

キーボードとの直接のやりとりなしにこれを解決するには、event filterを使用してみてください。key press eventsを観察し、高速に到着する場合はそれらの一部を拒否します。

+0

これは実際には私の問題を解決するものではありません。なぜなら、この場合はイベントフィルタにもタイマーが必要で、実際にはタイマーを使いたくないからです。 –

+0

いいえ、タイマーは必要ありません。最後のイベント以降の時間差を計算するだけで済むので、最後に渡されたイベントの時間を保存して、次のイベントが受け渡されるか無視されるかを判断する必要があります。 –

+0

オクラホマ、私はそれを試し、もっとうまくいくか見てみましょう。 –

0

デバイス通信サブシステムには、ビジー状態と使用可能状態の2つの状態があります。ビジー状態になると、ターゲット内の特定の変数の更新をスケジュールする必要がありますが、まだ実行しないでください。前回の通信が完了し、サブシステムが利用可能になると、未処理の変更を取得して伝播するはずです。

関連する問題