QML でアプリケーションを設計しているときに、奇妙な問題に遭遇しました。次のコードが機能します。
TableView {
itemDelegate: Item {
function a() {}
Loader {}
}
}
Item オブジェクトであるこのアイテム デリゲートには、多数の関数、プロパティ、およびローダーがあります。このデリゲートを ListView で再利用しようとすると、問題が発生します。次のように参照することはできません。
Item {
id: myitem
function a() {}
Loader {}
}
TableView {
itemDelegate: myitem
}
error: Unable to assign QQuickItem to QQmlComponent
これはitemDelegate
、Component
次の理由によるものです。
http://qt-project.org/doc/qt-5/qml-qtquick-controls-tableview.html#itemDelegate-prop
したがって、QML は、埋め込まれている場合はItem
をに変換できますが、参照されている場合は変換できません。Component
コンポーネントには関数、ローダー、プロパティなどを含めることができないため、コンポーネントにすることはできません。
デリゲートを再利用するにはどうすればよいですか?