Есть класс, производный от QObject.
class MyClass : public QObject
{
Q_PROPERTY(int a READ...)
}
Если объекты этого класса складывать в список QList<QObject*>, то они подхватываются в QML и отображаются в ListView. А если использовать QList<MyClass*>, то ListView оказывается пустым. Но хотелось бы в c++-коде использовать именно QList<MyClass*>, а лучше QList<QSharedPointer<MyClass>>, так как в противном случае придётся использовать восходящее приведение типов, что может привести к ошибкам. Какие есть способы такое провернуть?
Унаследуйтесь от QAbstractListModel, реализуйте методы data, сount и roles и т.д этого класса и наследник засуньте в макрос QML_DECLARE_TYPE()
Итого сможете использовать в QML как объект
class MyModel: public QAbstractListModel
{
Q_OBJECT
public:
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
int rowCount(const QModelIndex &parent) const;
QHash<int,QByteArray> roleNames() const;
private:
QList<MyCustomClass*> mList;
};
QML_DECLARE_TYPE(MyModel)
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости