1月19日(土) に開催された Qt 勉強会 @ Nagoya #24 - connpass に久しぶりに参加しました。
そのまとめです。
本日の知見
ListView の背景のマウスイベントを透過
ListView の背景のマウスイベントを透過する方法。 結構、実現するのに時間がかかったけど、結局はプロパティを一つ変えるだけだった。
まず Qt Quick の ListView は次のような派生で実装されています。
QtObject
+- Item
+- Flickable
+- ListView
それでもって ListView の背景を透明にしても、その下にあるコンポーネントに対しては、マウスのホバー以外のクリックやホイール操作は渡されない。
結局のところ色々調べたところ、 Flickable がフリック操作を検知するためにマウスのイベントを処理している様子。
なので、答えは
ListView {
interactive: false
}
と、 interactive
プロパティを false
にすれば良いようです。
ちなみに、この設定を変更すると当然のことながらフリック動作が聞かなくなります。
ラムダ式
スコープに注意!
コンストラクタでラムダ式を引数に渡してメソッドを呼び出したら(実際の実行は遅延される)スコープ抜けた途端に破棄されていた。
メンバ変数に代入して生存の時間を伸ばして解決。
懇親会
もぐもぐ