Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ListView未填充_C++_Qt_Qml_Blackberry 10_Blackberry Cascades - Fatal编程技术网

C++ ListView未填充

C++ ListView未填充,c++,qt,qml,blackberry-10,blackberry-cascades,C++,Qt,Qml,Blackberry 10,Blackberry Cascades,我有一个带有ListView控件的qml文件。ListVIEW的数据模型是从C++中设置的。问题是,在运行应用程序时,ListView的项目不会显示 以下是我的qml代码: import bb.cascades 1.0 import Data.SelectRoomView 1.0 Page { id: pageSelectARoom property string propID attachedObjects: [ SelectRoomView {

我有一个带有ListView控件的qml文件。ListVIEW的数据模型是从C++中设置的。问题是,在运行应用程序时,ListView的项目不会显示

以下是我的qml代码:

import bb.cascades 1.0
import Data.SelectRoomView 1.0

Page {
    id: pageSelectARoom

    property string propID

    attachedObjects: [
        SelectRoomView {
            id: selRoom 
        }
    ]

    onPropIdChanged: {
        selRoom.propId = propId;
    }


    ListView {
        id: lv_rooms
        objectName: "lv_rooms"

        onDataModelChanged: {
              console.debug("model changed to " + ruleList.dataModel);
              DataModelChangeType.Init;
        }

        listItemComponents: [
            ListItemComponent {
                type: "header"

                Header {
                    title: ListItemData
                }
            },

            ListItemComponent {
                type: "item"
                StandardListItem {
                    title: ListItemData.name
                }
            }
        ]
    }
}

这是我的C++代码:

QString workingDir = QDir::currentPath();
QDeclarativeEngine *engine = new QDeclarativeEngine();
QDeclarativeComponent component(engine, QUrl::fromLocalFile(workingDir + "/app/native/assets/SelectARoom.qml"));

QObject *object = component.create();
    qDebug() << "Component error: " << component.errors();

    ListView *listView = object->findChild<bb::cascades::ListView*>((const QString) "lv_rooms");

if (listView) {
    qDebug() << "Found lv_rooms.";

    GroupDataModel *model = new GroupDataModel(QStringList() << "ruleName" << "name");
    model->setGrouping(ItemGrouping::ByFullValue);

    QVariantList rules_and_rooms_flattened_list;

    QVariantList rules = resultSet["rules"].toList();

    qDebug() << "Rules list contains: " << rules.size();

    for(QList<QVariant>::iterator it = rules.begin(); it != rules.end(); it++) {

        QVariantMap rule_map = it->toMap();
        QVariant ruleName = rule_map["ruleName"];

        QVariantList rooms = rule_map["rooms"].toList();

        for(QList<QVariant>::iterator it = rooms.begin(); it != rooms.end(); it++) {
            QVariantMap room_map = it->toMap();
            room_map["ruleName"] = ruleName;
            QVariant ruleName2 = room_map["ruleName"];
            QVariant roomName = room_map["name"];

            qDebug() << "room_map item: rule=" << ruleName2 << ", room=" <<roomName;

            rules_and_rooms_flattened_list.append(QVariant(room_map));
        }
    }

    model->insertList(rules_and_rooms_flattened_list);
    qDebug() << "model contains " << model->size() << " items";
    listView->setDataModel(model);
}
else {
    qDebug() << "lv_rooms not found.";
}

在我的C++代码中,而不是使用qQuestTrimeCo组件来获取SelectARoom.qml的实例,我尝试使用QMLoDist::Cuto,然后设置场景应用程序::实例-> Set Field,但是一旦SelectARoom加载,应用程序就会崩溃。 那么,应该怎么做才能显示ListView的项目呢?谢谢