3

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

これはitemDelegateComponent次の理由によるものです。

http://qt-project.org/doc/qt-5/qml-qtquick-controls-tableview.html#itemDelegate-prop

したがって、QML は、埋め込まれている場合はItemをに変換できますが、参照されている場合は変換できません。Component

コンポーネントには関数、ローダー、プロパティなどを含めることができないため、コンポーネントにすることはできません。

デリゲートを再利用するにはどうすればよいですか?

4

1 に答える 1

6

コンポーネント内にアイテムをラップすることで解決:

Component {
   Item{...}
}
于 2014-07-31T16:01:16.823 に答える