私はStackViewを使用し、このStackViewに多くの動的作成オブジェクトをプッシュし、StackViewからポップされるときにこのオブジェクトを破棄する方法が必要です。私はコントロール1 Stackviewを使用している場合、私はちょうどdestroyOnPopプロパティを持つオブジェクト(それはthis questionに示されたように)プッシュすることができます:QtQuick.Controls 2 StackView and destroyOnPop
tablesStack.push({item: view, destroyOnPop: true})
を、それはコントロール2 StackViewには適用しません。この問題の正しい解決策は何ですか?
私はただ一つの方法しか知っていません:私はそれをポップするときに遅延オブジェクトdestroy()を呼び出しますが、この方法はkludgeのように見えます。重要な場合は、動的生成オブジェクトに任意のコードを追加できます。
それはファイル、感謝からQt.createComponentで動作しますが、私は、私は自分のコードときを変更する必要があります方法を理解していません私はQt.createQmlObjectを使用しますか?私のテストコードはここにありますhttps://gist.github.com/anonymous/372c58e7f53531bd6e51950d611e33a7 – aknew
好奇心ではなく、 'Qt.createQmlObject()'を使用する主な理由は何ですか?ハード依存関係などを避けるための素晴らしいトリックですが、ほとんどの場合、より明示的なコンポーネントが一見良いです。とにかく、Qt 5.8でQtQuick Controls 2.1を使うと、 'Rectangle {StackView.onDeactivated:destroy}'を実行することができます。 2.0では、おそらく状態のチェックに頼る必要があります: 'Rectangle {StackView.onStatusChanged:if(StackView.status === StackView.Inactive)destroy()}' – jpnurmi
それは、ありがとうございます。 createQmlObjectを使用する理由は非常に簡単です。私は動的なテーブルをいくつかのsqliteベースから動的に作成しますが、実行時にどのフィールドにテーブルが含まれるかわかりません。歴史的に私はしばしば最初にテーブル構造体を変更しました。それはいくつかのqmlの変更を忘れないようにする方法でした。あなたが私のコードに興味があれば、ここに私のgithub https://github.com/aknew/CoinsVariationBase – aknew