私には、QAbstractListModel
を継承するクラスがあります。 setContextProperty()
でqmlに登録されたインスタンス(new
演算子で動的に作成されたインスタンス)です。 QmlではGridLayout
とRepeater
で使用されます。私は、次のコードでQMLからそれを実行します:SetContextPropertyを使用してqmlに登録されたC++モデルを削除する
問題は、私は私のプログラムを閉じたときに、発生する
quitButton{
onClicked: {
application.close();
Qt.quit()
}
}
し、プログラムがクラッシュ
delete(instanceOfModelClass);
にアクセス違反と。私はこのインスタンスのためにQObjectの親を設定しようとしましたが、エンジンのこのオブジェクトに対してQQmlEngine :: CppOwnershipを設定しましたが、それでも動作しません。
どのように問題を解決できますか?
P.S.私は削除を削除した場合(instanceOfModelClass);私は理解しているように、それはmeamoryリークがあります。
親または「CppOwnership」を設定すると効果があります。問題を示す最小限の完全な例を提供できれば助けになります。代わりに、 'main()'で作成していると仮定して)代わりに 'instanceOfModelClass'をスタックに作成することもできます。 – Mitch
モデルを作成するときに、以前に削除された可能性のある親を設定しますか? – derM
**あなたのPSについて**:それはプラットフォームに依存します。 https://stackoverflow.com/questions/2975831/is-leaked-memory-freed-up-when-the-program-exits-多くのシステムでは問題はありませんが、私はそれをきれいにする良いスタイルだと考えていますアップ。次の人があなたのコードを実行するプラットフォームを知っている人。 – derM