1

WebサーバーからデータをフェッチするXmlListModelがあります。これはうまく機能します。

ただし、これをCLComboBox(Colibriライブラリから)で使用したいと思います。

パラメータListModelをXmlListModelに設定すると、次のようになります。

Non-existent attached object 
         ListModel:xmlModel13

しかし、それは存在します。ListViewオブジェクトはまったく同じモデルを使用できるためです。

CLComboBoxはListModelのみを受け入れるように思われるので、XmlListModelをListModelに簡単に変換する方法はありますか?

4

2 に答える 2

4

どちらもの子孫であるため、キャストQDeclarativeXmlListModelすることはできません。QDeclarativeListModelQListModelInterface

私の意見では、Colibriは。の代わりにQObjectvariantプロパティ)を使用する必要がありQDeclarativeListModelます。そして、標準的なアイテムベースのモデル信号を聞いてください。たとえば、ある程度の努力で修正できると思います。

Colibriに貢献したくない場合は、@sabbourの答えが最善の選択肢だと思います。簡単な例を考えてみましょう。

XmlListModel {
    id: xmlModel
    source: "http://forumcinemas.lv/rus/xml/Events/"
    query: "/Events/Event"
    XmlRole { name: "label"; query: "Title/string()" }
    XmlRole { name: "value"; query: "ID/number()"; isKey: true }
    onStatusChanged: {
        if (status == XmlListModel.Ready) {
            for (var i=0; i<count; i++) {
                var item = get(i)
                list_model.append({label: item.label,
                                   value: item.value,
                                   selected: false})
            }
            // CLComboBox doesnt seem to listen for model updates
            combo_box.items = list_model
        }
    }
}

ListModel {
    id: list_model
}

CLComboBox {
    id: combo_box
    // ...
}
于 2012-05-28T19:19:00.250 に答える
1

ループを使用して、CLComboBox 内に ListModel を設定できます。

于 2012-05-28T10:40:08.873 に答える