oh! thank you for the explanation.
it really explains the why.
I already did another approach
subclassing the QAbstractListModel for using it with a QListView;
i'm not sure if this is the fastest way. (maybe not)
m_suggest = new QListView;
m_suggest->setModel(&m_ListModel);
connect(m_suggestListModel, &SuggestListModel::suggestCompleted, this, &ArcGisMap::suggestResults);
void ArcGisMap::suggestResults()
{
m_ListModel.list = m_suggestListModel->suggestResults(); /// (copy)
m_ListModel.refresh();
}
class StringListModel : public QAbstractListModel
{
Q_OBJECT
public:
StringListModel(QObject *parent = nullptr)
: QAbstractListModel(parent) {}
int rowCount(const QModelIndex &parent) const override
{
return list.count();
}
QVariant data(const QModelIndex &index, int role) const override
{
if (!index.isValid())
return QVariant();
if (index.row() >= list.size())
return QVariant();
if (role == Qt::DisplayRole)
return list.at(index.row()).label();
else
return QVariant();
}
void refresh()
{
emit dataChanged(index(0), index(0));
}
QList<Esri::ArcGISRuntime::SuggestResult> list;
};