Как назначить QAbstractListModel для ListModel - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть приложение, которое содержит ListModel. Я написал класс C ++, производный от QAbstractListModel.

Модель списка QML выглядит как

// SelectedStepsModel.qml
import QtQuick 2.0

ListModel {
    ListElement{
        step_name:""
        step_icon:""

, а класс C ++ выглядит как

class ProductModel : public QAbstractListModel
{
    Q_OBJECT

    Q_PROPERTY(QString product_name READ get_product_name)

public:
    enum {
        StepNameRole = Qt::UserRole,
        StepIconRole,
        ...

В основном

...
        ProductModel* product_model = new ProductModel();
        context->setContextProperty("product_model", QVariant::fromValue(product_model));
...

В одном из файлов (где модель QML заполняется некоторыми функциями в QML) я хочу заменить эту логику на вновь созданную модель (поскольку модель содержит все данные).

// some other file

    SelectedStepsModel {
        id: selected_model
    }

    selected_model = product_model

Обратите внимание: здесь selected_model - это ListModel, а product_model - это QAbstractListModel. Но selected_model = product_model терпит неудачу.

Правильно ли я делаю, как правильно назначить QAbstractListModel для ListModel.

Заранее спасибо.

1 Ответ

1 голос
/ 01 ноября 2019

Здесь нет такой вещи, как «назначение» моделей: либо вы используете экземпляр модели, который вы объявили в QML, либо вы используете предоставленную модель. Выберите один или другой.

...