QListViewのサンプルスクリプトです。
import sys
from PySide6.QtWidgets import QApplication,QMainWindow,QVBoxLayout, QWidget,QHBoxLayout
from PySide6.QtWidgets import QFileSystemModel
from PySide6.QtWidgets import QListView
PATH = 'D:/'
# メインウィンドウ
class MyMainWindow(QMainWindow):
# コンストラクタ
def __init__(self):
# スーパー(親)クラスのコンストラクタの呼び出し
super().__init__()
self.model = QFileSystemModel()
self.model.setRootPath(PATH)
# リストビュー
list_view = QListView()
list_view.setModel(self.model)
list_view.setRootIndex(self.model.index(PATH))
# 選択されたときのシグナルをメソッドに接続
selection_model = list_view.selectionModel() # 選択モデルを取得
selection_model.currentChanged.connect(self.item_selected)
# ダブルクリックされたときのシグナルをメソッドに接続
list_view.doubleClicked.connect(self.item_double_clicked)
# レイアウトを作成
layout = QVBoxLayout()
layout.addWidget(list_view)
# レイアウトをQWidgetに設定し、それをCentralWidgetにする
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
def item_selected(self, current, previous):
if current.isValid(): # 項目が有効かチェック
item_text = self.model.data(current, role=0) # 選択された項目のテキストを取得
print(f"選択された項目: {item_text}")
else:
print("項目が選択されていません")
def item_double_clicked(self, index):
if index.isValid(): # 項目が有効かチェック
item_text = self.model.data(index, role=0) # ダブルクリックされた項目のテキストを取得
print(f"ダブルクリックされた項目: {item_text}")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyMainWindow()
window.show()
sys.exit(app.exec())
実行するとリストビューが表示され、項目のクリックまたはダブルクリックするとコンソールに文字が表示されます。
起動した段階で1行目が選択されたシグナルが発生してるようで自動的にコンソールに文字列が表示されました。
QFileSystemModel
が大変興味深いですが其方はオイオイ調べたいと思います。
コメント