私は の を持っていQTreeView
ますQStandardItemModel
。カスタムデリゲートを使用してデータをペイント/編集しています。createEditor
メソッド内でparent.window()
、アプリケーション全体のメイン ウィンドウにアクセスするために使用します (別の質問のコードへのリンクについては、以下を参照してください)。
createEditor
質問:デリゲートの親は何ですか? 次のパラメータで定義されます。
def createEditor(self, parent, option, index)
紛らわしいのは、QStyledItemDelegate
が初期化されたときです。そのtype(parent)
ために出力すると、ツリーが返されます (このデリゲートを表示するようにしたツリー)。これは私が期待するものです。ただし、メソッドの実装内で同じことを実行して出力すると、単に が返されます。ここから得た提案である実行時に同じ結果が得られます。type(parent)
createEditor
QWidget
parent.metaObject().className()
ツリー ビューで定義した属性 ( などparent.rootItem
) を取得しようとすると、属性エラーが発生します。それで、ここで何が起こっているのですか?エディタの親は何ですか?
PyQtのドキュメントにはあまり助けがありません:
親引数は、None でない場合、self が PyQt ではなく Qt によって所有されるようにします。QAbstractItemDelegate.createEditor() から再実装されました。index で指定されたアイテムを編集するために使用されるウィジェットを返します。親ウィジェットとスタイル オプションは、エディター ウィジェットの表示方法を制御するために使用されます
これはすべて、ここのソリューションへのコメントで説明されている別の問題のソリューションによって開始されたことに注意してください。