у меня есть структура списка моделей гнезд C ++, как это,
class ListModel : public AbstractListModel
{
public:
.....
private:
QList<QObject*> m_List;
}
class TrendListModel : public ListModel
{
public:
.....
void addTrendData(.....)
{
TrendData* trendData = new TrendData(....);
QQmlEngine::setObjectOwnership(trendData, QQmlEngine::CppOwnership);
beginInsertRows(QModelIndex(), rowCount(), rowCount());
m_List << trendData;
endInsertRows();
}
void addImage(int row, QString path)
{
if(row < 0 || row >= rowCount())
{
qWarning() << "addImage to invalid trendData pointer!"return;
}
TrendData* trendData = qobject_cast<TrendData*>(m_List.at(row));
trendData->addImage(...., path);
emit dataChanged(index(row), index(row));
}
}
class TrendData : public QObject
{
public:
.....
{
m_ImageListModel = new ImageListModel(this);
QQmlEngine::setObjectOwnership(m_ImageListModel, QQmlEngine::CppOwnership);
}
void addImage(..., path)
{
m_ImageListModel->addImage(..., path);
}
private:
ImageListModel* m_ImageListModel;
}
class ImageListModel : public ListModel
{
void addImage(..., path)
{
Image* image = new Image(path, this);
QQmlEngine::setObjectOwnership(image, QQmlEngine::CppOwnership);
beginInsertRows(QModelIndex(), rowCount(), rowCount());
m_List << image;
endInsertRows();
}
}
ListView{
model: trendListModel //from setContextProperty()
delegate{
.......
ListView{
model: imageListModel //return from trendListModel's data function
}
}
}
Я добавляю экземпляр TrendListModel в просмотр списка qml, правильно делаю предварительный просмотр, но когда я вытаскиваю страницу qml из стека, она вылетает на ios, но отлично работает на android. Отчет об аварийном сбое, как показано ниже:
Задача ещё не решена.
Других решений пока нет …