1

QStandardItemModel を使用してデータの階層を表現しようとしていますが、QStandardItems をモデルに追加するときに、それらをオブジェクト メンバー変数に割り当てる必要があります。そうしないと、オブジェクトが削除されたように見えます。

例えば

self.tree_model = QStandardItemModel()
self.tree_model.setHorizontalHeaderLabels(['Category'])
self.out_insertions = QStandardItem("Insertions")
self.tree_model.invisibleRootItem().appendRow(self.out_insertions)

期待どおりに動作します (「カテゴリ」列の下に「挿入」行が挿入されます)。しかし、self.out_insertion の割り当てを削除すると、次のようになります。

self.tree_model = QStandardItemModel()
self.tree_model.setHorizontalHeaderLabels(['Category'])
self.tree_model.invisibleRootItem().appendRow(QStandardItem("Insertions"))

機能しません (空の行が表示されます)。

Qt 4.6.3 と PySide 0.4.1 を使用しています。なぜこれが起こるのか誰かが私に説明できますか?

前もって感謝します

〜アキ

4

1 に答える 1

4

オブジェクトへの(Python)参照が存在しないため、オブジェクトはガベージコレクションされます。

この動作については、PyQt ドキュメントの「注意事項」に記載されています。

これらの問題 (PyQt の土地) のほとんどは、正しいparenting(PyQt の代わりに Qt が所有権を取得する) ことで回避できます。

于 2010-11-01T18:12:55.317 に答える