PySideでのQListWidgetをカスタマイズする方法…pythonコード例

PySideのみならずPyQtでも同じです。

カスタマイズしたQListWidgetを作りたい

それにはQListWidgetの拡張は必要ありません。
単にリストアイテムを定義するだけでOKです。

ここでは次のカスタムQListWidgetを作ります。

▼ カスタムしたいリストアイテムの中身

  • レイアウトは垂直並べ
  • 上部にラベルを配置
  • 下部にはボタンを配置

少し分かりにくい部分もあるので、
Python・PySideでの作り方をまとめました。

1.初めにリストアイテム用のQWidgetクラス作成

ここでは MyCustomWidget というクラス名

それがQListWidgetに追加するカスタムアイテムです。

▼ 実際にこのようなコードを定義した

当然ながらQWidgetを継承すること

あとは垂直レイアウトだからQVBoxLayoutを使っており、それにラベルとボタンを追加してるだけです。あとコンストラクタにはラベル用の名前を受け取ってます。

本当はQDeisgherからuiファイルを作り、コンストラクタ内で読み込みすると楽です。今回は単純なレイアウトなので直にQVBoxLayoutを生成しました。

ひとまずリストアイテムの定義は完了

2.QListWidgetにリストアイテムを動的に追加する

そしたらQListWidgetにアイテムを追加するだけ

データソース配列から動的に追加するのが王道です。

▼ 例 : QListWidgetへのリストアイテム追加

大体このような流れ

カスタマイズしたリストアイテム(MyCustomWidget)を追加する時、 item.setSizeHint(row.minimumSizeHint())  とすることでリサイズが起きても収まるように調整してます。

あとはデータソース配列(dataSources)をループで回し、ひたすら必要な分だけリストアイテムを追加していってるだけです。

やってることはそれだけ

3.出来上がったカスタムQListWidgetの見た目

ウィンドウ全体に表示してみました。

▼ 出来上がったQListWidgetはこういう感じ

PysideにてカスタマイズしたQlistWidgetを作って表示してみた。1つのテキストとその下に1つのボタンがあるリストアイテムを持つQListWidget

ここで作ったのは本当に見た目だけです。ボタンを押しても反応しないけど、clickedシグナルにスロット関数を動的追加していけば個別に処理ができます。

▼ ちなみにSIGNAL/SLOTについての記事

イベント処理とか見栄えとか…

そこらへんは各自工夫してください。

QListWidgetのカスタマイズ方法をまとめ

ここまでを箇条書きでまとめます。

以上、カスタムしたQListWidgetを作る方法でした。

上記手順で簡単にカスタマイズできます。

Shareこの記事をシェアしよう!

Commentsこの記事についたコメント

コメントを残す

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

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください