独自のカスタムデリゲートを作成するときは、createEditor()
,setEditorData()
およびsetModelData()
を実装します。私は次の問題に直面しています。私が見たcreateEditor()
のすべての例は、QComboBoxやQLineEditのような単純なものを使用していますが、これはshow()
またはexec()
メンバー関数を持たず、QDialogを使用しようとする度にプログラムは未定義の動作をしています(QDialogが表示されます)。しかし、狂った行動。私はシグナル/スロットマジックを使用してプログラムを稼働させましたが、標準的なパターンを使って実装したいと思います。例えば、http://cep.xray.aps.anl.gov/software/qt4-x11-4.2.2/model-view-delegate.htmlどうすればいいですか?QDialogをカスタムデリゲートにスティックするにはどうすればよいですか?
未定義の動作に直面したときに何が起きるかを詳しく調べるために、createEditor()でQDialogの親を設定すると、QDialogは表示されません。設定しないと表示されます(それはとにかく間違っていて、私はいつも親を設定しなければならないと思います。そうでなければ私はメモリリークを起こすからです)。私は今、私の質問は次のようになっていると思います。QDialogを正しく表示させるにはどうすればいいですか?私はsetEditorData()、setModelData()、およびcreateEditor()の異なる部分にshow()とexec()を貼り付けようとしましたが、何も正しく動作しません。
ウィジェットではなくダイアログが必要な理由はありますか? – Hayt
@Hayt、そこにQTreeViewを表示したいので、別のウィンドウが必要です。 – Pavel
ダイアログではなくカスタムウィジェットを作成します。デリゲートにウィジェットを貼り付けることができます。 – Hayt