3

Qt/QML を使用して Windows 7 用のタッチ アプリケーションを開発しています。エンド ユーザー デバイスには、Windows 7 のネイティブ タッチ動作があります。つまり、画面にタッチすると、最後にタッチしたポイントにポイントが表示され、物理的なタッチを終了すると、Windows はそのポイントを現在タッチしているポイントに配置して実行します。クリックされたイベントで。

Windows の標準的なマウスの使用法で知られている動作と比較すると、これは、たとえば何らかのボタンをクリックするとすぐに異なる動作につながります。マウスボタンが上がると、色が再びデフォルトの色に変わります。

私のアプリケーションでは、タッチ フィードバックのカスタマイズされた方法が必要です。現在タッチされているものは、実際の物理的なタッチが開始されたときに「マウスが下がる」を模倣し、「マウスが上がる」を模倣して、変更された色のボタンを使用してマークする必要があります。実際の物理的なタッチが終了したとき。

私のアプリケーションはフルスクリーンで実行されるため、実際には、アプリケーションの開始時にシステムの動作を変更し、アプリケーションの終了時にデフォルトに戻すことが可能です。

このような動作は、たとえば私が知っているすべての Android デバイスの標準的な動作と実質的に同じです。

すべての MouseArea 要素と MultiPointTouchArea 要素を検索し、クリック反応の動作を標準の動作とは異なるものにする方法を見つけようとしました。しかし、実際のタッチの開始をキャプチャする方法さえ見つけられませんでした... タッチの開始時に発生したいすべてのことは、タッチが終了したときに実際に発生します。

編集:QMLボタンまたはマウスエリアとMouseArea.pressedプロパティを使用するかどうかは関係ありません:指がタッチを離れる前に何も「押され」ず、onClicked()が呼び出されます。

おそらく関連: Adobe AIR:タッチスクリーンはマウスダウンイベントを正しくトリガーしません-しかし、ネイティブQtアプリケーションからMultitouch.inputMode(最初の返信で言及されています)のような機能にアクセスする方法が見つかりませんでした。

アプリケーションで説明されている動作を実現するにはどうすればよいですか?

4

1 に答える 1

2

この問題の解決策は、アプリケーションの「長押し」を無効にすることです。これは、システム全体の設定で実行できることです... [コントロール パネル] -> [ペンとタッチ] -> [タッチ] -> [プレス アンド ホールド] -> [設定] -> [右クリックでプレス アンド ホールドを有効にする] のチェックを外します

ネイティブ コードでこれを解決した唯一の解決策は、http: //msdn.microsoft.com/en-us/library/ms812373.aspxにあります。

これが少なくとも Windows 7 で動作することを確認しました。QML で動作するようにするために、QQmlApplicationEngine::rootObjects() で QWindow* を検索し、その winId を HWND として使用しました。その HWND を使用して、リンクから app.exec() の前に TogglePressAndHold 関数を呼び出しました。

于 2015-01-15T08:37:15.077 に答える