問題タブ [qkeyevent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - QKeyEventを特定のqmlアイテムに送信するには?
QKeyEvent
カスタム( Keypress key Bなど) をQML ファイル内のアイテム ( などTextField
)に送信しようとしています。これは私が書いたもので、動作しません。アイテム ( ) がイベントを取得していないようです (のテキストに文字が追加されていないため、これを想定しています)。クラスでシグナルをキャプチャしてから、スロットでカスタムを投稿しようとしましたが、ここでは.TextField
B
TextField
click
ClickHandler
handleClick
event
focused item
TextField
ClickHandler.h
ClickHandler.cpp:
main.cpp:
main.qml:
c++ - QKeyEvent isAutoRepeat が機能していませんか?
そのため、特定のボタンを押し続けるとオーディオ デバイスが再生され、ボタンを離すとオーディオ デバイスが停止するアプリケーションがあります。以下のコードに似たこれを実装するためkeyPressEvent
に andを使用します。KeyReleaseEvent
しかし、押した後に0キーを離していないにもかかわらず、isAutoRepeat
連続して印刷されているのを見ることができるため、明らかに機能が機能しkey_0 pressed
ていません。key_0 released
私のコードが間違っていますか、それとも何かが間違っていますか?
ありがとう。
編集
MainWindow
がキーボードのフォーカスを失ったため、これが起こっていると思います。どのウィジェットにフォーカスがあるかを実際に確認するにはどうすればよいですか? 押されたときに実際にいくつかのウィジェットを使用していますQt::Key_0
が、それらの可能なウィジェットをすべてに設定したと思っていましたがQt::NoFocus
、機能していないと思います。
次のようにして、どのウィジェットにフォーカスがあるかを知りたいと思っています。
ただし、常に空の文字列が出力されます。キーボードフォーカスがあるウィジェットの名前を出力するにはどうすればよいですか?
qt - QKeyEvent のキー位置を取得する (マルチプラットフォーム)
すべてのキーボード レイアウトで機能する、位置ベースのキーボード ショートカットを作成するには、キーボード レイアウトを上に置かずに、物理的なキーボード キーを識別する必要があります。理想的には、QKeyEvent のスキャンコードを取得したいと考えています。これは、キーボード レイアウトに依存しないためです。
たとえば、ボリュームダウンとボリュームアップ(US キーボード レイアウトで隣り合っている 2 つのキー)にマップShift+Q
したい場合、このスキャンコード セットに従って、これらをとにマップするだけで済みます。このように、Q と A が入れ替わるフランス語のキーボード レイアウトでも機能します。また、キーボード レイアウトは無視されるため、DVORAK キーボード レイアウトやその他の特殊なキーボード レイアウトでも機能します。Shift+W
Shift+0x10
Shift+0x11
問題は、QKeyEvent のスキャンコード、またはキーボード レイアウトを無視して、すべてのプラットフォームで動作する物理キーの位置を示すその他のパラメーターを取得するにはどうすればよいかということです。Windows、Linux、OSX で動作するようにしたい。
QKeyEvent::nativeScanCode()はジョブを完了しますが、OSX では機能しません:\
qt - keyEvent をウィジェットから QKeySequenceEdit に伝播します
と があり、でショートカットを編集するためにショートカットを押したいと思っQTreeWidget
ています。私は eventFilter をインストールし、このソリューションを使用して対応するものを構築しました:QKeySequenceEdit
QTreeWidget
QKeySequenceEdit
QShortcut
現在のキーボード レイアウトに応じて QKeyEvent から QKeySequence をキャプチャするにはどうすればよいですか?
しかし、私はにイベントを送信することにこだわっていQKeySequenceEdit
ます。ここに eventFilter のコードがあります
qDebug
正しいキーを出力しますが、QKeySequenceEdit
反応しません。
pyqt - フォーカス ポリシーを設定して矢印キー イベントを処理する
アプリケーションで矢印キーのキー イベントを処理したいと考えています。そのためには、フォーカスを無効にする必要があることを既に読んでいます。私はこの方法に従います: PyQt は矢印キーを認識しません。実際、self.setChildrenFocusPolicy(QtCore.Qt.NoFocus)
(リンクされたスレッドと以下のソース コードで定義されているように) 内で呼び出すとMyApp.__init__
、矢印キーを押すとキー イベントが発生します。ただし、アプリケーションの実行中にフォーカスを無効にしたくはありませんが、ボタンをクリックしたときだけです。そこでself.setChildrenFocusPolicy(QtCore.Qt.NoFocus)
、ボタン クリック機能に移ります。
実際、プッシュ ボタンを押すとフォーカスが無効になります (たとえば、行編集でテキスト カーソルを取得できなくなります)。ただし、矢印キーを押してもキー イベントは発生しません。
アプリケーション全体 (プッシュ ボタンのある mainwindow.ui が必要です):
c++ - Qt keyPressEvent エラー
このコードを書きましたが、次のエラーが発生します。
「'->key' の左側は、class/struct/union/generic 型を指している必要があります」。
GUIがクラスから派生したQWidget
クラスであることを考えると、キーの押下を適切にキャッチするにはどうすればよいですか?
は次のkeyPressEvent
ように宣言されます。