PyQt QListViewで困ったこと

PyQt QListViewで困ったこと

実現したかったこと

  • リスト内で矢印キーを使えるようにする。
  • 矢印キーでアイテムを切り替えるごとにイベントを呼ぶ
    (ここで行うのはラベルのテキストを変更)

とりあえずQListView

QtDesignerでUIを作っていたので、なにも考えずにQListViewを選択しました。

最初はシグナルとしてClickedを割り当てていたので、これを変えたら解決やーと安易に思っていました。

ですが、軽く2時間くらい暗中模索でした…

selectionChangedは落とし穴

いろんなサイト様をお邪魔して、selectionChangedを使えばいいやんけとなりましたが、全くダメでした。

sModel = self.view.selectionModel()
sModel.selectionChanged.connect(イベントというかスロット?)

上のように書けばいいよみたいなことも何とか英語を読み解いてたどり着きましたが全くダメでした。

多分これはQListViewには無関係なのでしょう。
(リファレンスにも「機能はあるよ~」風に書いてあったのに…)

正解は知らない!!

QListViewをつかってのアプローチは私にはできませんでした。

英語を勉強して、普通のQtに対して理解を深めることが大切だと思いました。

ここで諦めると思ったら大間違い

そうです。諦めてたら記事になりません。

私はQListViewのシグナルになにがあるのかをQtDesignerで見ていたので、その時にQListWidgetというアイテムがあることに気づきました。

このQListWidgetなんですが、itemSelectionChangedというシグナルを設定できます。読んで字の如くとはまさしくこれだと思いましたね。

結果は…

「完璧でした!!」

選んでいるアイテムが変わる度ということで、クリックで変更したときであろうが矢印キーで変更したときであろうが、イベントを呼んでくれます。

もともとシグナルとして使っていたClickedは用済みになりました。

最後に

QListViewとQListWidgetsはどちらがいいんでしょうか?
それぞれに一長一短があるのでしょう。

私は動けばなんでもいいんですけどね!!

ではまた~

追記

サンプルを載せてませんでしたが、こんな使い方ができるよーっていう参考として載せておきます。

気になる方はこちらまで!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です