1

これで私を助けてください。

QML ファイルで ListView を作成し、Web サービスから受け取ったデータを入力しました。この Web サービスは画像を提供しないため、その場所にダミーの画像を配置する必要があります。次に、別の方法を使用してURLから画像を取得しました.今、cppファイルに画像を取得しました.しかし、リストビューを更新できませんでした. 私は多くの方法を試しましたが、失敗しました。これが私のコードスニペットです。

      ListView {
            id: listView
            objectName: "listView"

            dataModel: ArrayDataModel {
                id: myListModel

            }


            // Override default GroupDataModel::itemType() behaviour, which is to return item type "header"
            listItemComponents: ListItemComponent {
                id: listcomponent
                // StandardListItem is a convivience component for lists with default cascades look and feel
                StandardListItem {
                    id: stdlst
                    title: ListItemData.postText
                    description: ListItemData.postDate
                    status: ListItemData.filePath
                    imageSource: assets:///image.png
                }

            }
            layoutProperties: StackLayoutProperties {
                spaceQuota: 1.0
            }
            horizontalAlignment: HorizontalAlignment.Fill
            verticalAlignment: VerticalAlignment.Fill

        }

このリストビューの imagSource を他のイメージに置き換える必要があります。どうすればよいですか?

4

1 に答える 1

0

あなたがする必要があるのは、あなたの に影響を与えるのではなく、assets:///image.pngデフォルトで に初期化するStandardListItemのプロパティに影響を与えるべきです。完了したら、画像を取得するときに、データ項目のプロパティを変更するだけです。ListItemDataassets:///image.png

表示されたクラスが呼び出されたとしましょうDataElement

    class DataElement: public QObject {

        Q_OBJECT

        Q_PROPERTY(QString postText READ getPostText CONSTANT);
        Q_PROPERTY(QVariant image READ getImage WRITE setImage NOTIFY imageChanged);
        // Other properties here...

    public:
        DataElement() {
            _postText = "Default text";
            _image = QVariant::fromValue
                (bb::cascades::Image(QUrl("file://" + QDir::homePath() + "/image.png")));
        }

        QVariant image() const {
            return _image;
        }

        void setImage(QVariant image) {
            if (image != _image) {
                _image = image;
                emit imageChanged();
            }
        }

        // Missing methods for other properties etc

    signals:
        void imageChanged();

    private:
        QString     _postText;
        QVariant    _image;
    };

あなたは次のListItemようになります:

    StandardListItem {
        id: stdlst
        title: ListItemData.postText
        description: ListItemData.postDate
        status: ListItemData.filePath
        image: ListItemData.image
    }

画像をロードするときに、 でそれを呼び出すsetImageと、それにDataElement応じてビューが更新されます。

于 2013-07-30T12:43:29.270 に答える