問題タブ [mousearea]
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.
qml - MouseArea が QML 要素のマウス イベントを盗んだ
MouseArea
QML 要素にを配置すると、MouseArea
すべてのマウス イベントが盗まれます。したがって、TextEdit
編集も選択もできなくなります。
それを解決する方法はありますか?
ちなみに、大きなものMouseArea
を別のに置くとMouseArea
、大きなものMouseArea
はすべてのマウスイベントを盗みます。どうすれば解決できますか?マウスイベントを手動で渡すことで解決できると思いますが、どうすればよいですか?
qt - カーソルがそのマウス領域の外に移動するとき、押されている間はカーソルの形状を維持します
迷惑な動作をする狭いサイズ変更ハンドルを実装しています。マウスがハンドルの真上にあるときのカーソルの形状は期待どおりですが、ハンドルのドラッグが開始されると、カーソルの形状に一貫性がなくなります。これには 2 つの原因があります。
カーソルが速く移動し、ハンドルが「追いつく」までハンドルの前に移動する場合 (または「fluid qml」が流動的すぎる場合) - カーソルの形状が急速に変化して点滅するため、これは特に厄介です。
カーソルがハンドルの許可された自由度の外に移動したとき
ドキュメントを調べましたが、プレスが離されるまでカーソルをロックすることについては何も含まれていないようです。
私はそれを修正するためのハックを見つけることができました-ダミーのオーバーレイMouseArea
を使用してacceptedButtons: Qt.NoButton
-これは実際にはカーソルの一貫性を偽造するのに役立ちますが、それ自体の問題があります。ハンドルがオーバーレイ マウス領域の下にあるため、オーバーレイ マウス領域があると、カーソルがハンドル上にあるときにサイズ変更形状に変更できません。カーソルの形状をまったく変更することはできません。そのため、形状のサイズ変更はハンドルがクリックされた後にのみ開始されますが、これは理想とはほど遠いものです。オーバーレイ マウス領域を に設定してenabled: false
も、それは変わりません。下にあるマウス領域からのカーソル形状の変更をブロックし続けます。オーバーレイ マウス領域のサイズを 0x0 に設定するなどの回避策もありますが、これはちょっと見苦しいです。
理想的には、マウス領域がその領域の内外にあるかどうかに関係なく、マウス領域が押されるまでカーソルの形状が持続する必要があります。カーソルの形状を維持する必要があります。たとえば、ウィンドウのサイズ変更ハンドルを動かして、ウィンドウのサイズを最小サイズよりも小さく変更しても、プレスを放すまでは形状が変更されたままになります。
私には、実装に欠陥があるようですMouseArea
-押している間はカーソルの形状が保持されず、マウス領域が無効になっていてもカーソルの形状が変更されます。
qt - Qt/QML: アップグレード後にタッチ スクリーンをタップしても、Flickable の MouseArea がリリース/クリックされたことを通知しない
Qt 5.4.1 から 5.9.1 へのアップグレード後、次のコードはタッチスクリーン使用時の動作が変更されました。
以前は Qt 5.4.1 で、マウスまたはタッチスクリーンを使用して Rectangle をクリックすると、次のように表示されました。
現在、Qt 5.9.1 でマウスを使用すると、長方形をクリックしても同じように動作します。
しかし、Qt 5.9.1 では、タッチスクリーンを使用して Rectangle をクリックすると、印刷されるだけです
タッチスクリーンを使用しているときに、リリースおよびクリックされたシグナルが発行されなくなった理由はわかりませんが、私のコードでは、それらを発行する必要があります。
私が変われば
次に、クリックするとmouseAreaが3つの信号すべてを放出しましたが、フリックすると押された信号がmouseareaから放出されるため、これは解決策ではありません。
button - qmlボタンが起動しない、MouseAreaと同じ
Qt 5.9.3 に基づいて新しい QML プロジェクトを作成しました。Button と独自のボタン (MyButton) を使用して単純な ApplicationWindow をセットアップしましたが、onClicked() イベントが発生することはありません (どうやら)。アプリケーション ウィンドウがポップアップし、2 つのボタンが表示されます。いずれかをクリックしても、コンソール出力には何も表示されません。
また、それが問題になる場合は、qml ソース ファイルを .pro ファイルにプリコンパイルします。起動時にいくつかのフォント エラーが発生します。これを C++ で修正していくつかのフォントを動作させ、エラーや警告がないこと以外は何かを確認できます。単純なマウスクリックイベントを成功させようとして数時間費やしましたが、うまくいきませんでした。
どんな助けでも大歓迎です。
これが私のmain.qmlです:
および MyButton.qml
更新:私は非常に愚かなことをしました。含めなかった main.cpp ファイルでは、よりクリーンになり、QQmlEngine init コードを独自の別のメソッドに移動すると思いました。もちろん、エンジン参照が範囲外になると、問題が発生しました。そこに何か問題があるとqmlコードがまったく機能しないと誤って想定したため、私はそこを見ていませんでした。非常に忙しい 1 週間であり、帯域幅を浪費して申し訳ありませんでした。今後の参考のために、素晴らしいデバッグの提案もありがとうございます!