私はQAbstractListModel
を使用してマップ上にMapQuickItemsを構築していますが、モデル内のデータにアクセスするのに問題があります。私は、このモデルへのポインタを返すQ_INVOKABLE
てモデルにアクセスするようだQAbstractListModel MapIteMVieWでの委託
class AdventureOnMap
{
public:
AdventureOnMap(const int &adventureId, const int &tagId, const QString &name, const QString &desc, const QString &clue, const int &award, const double &geoLat, const double &geoLong);
int adventureId() const;
int tagId() const;
QString name() const;
QString desc() const;
QString clue() const;
int award() const;
double geoLat() const;
double geoLong() const;
private:
int l_adventureId;
int l_tagId;
QString l_name;
QString l_desc;
QString l_clue;
int l_award;
double l_geoLat;
double l_geoLong;
};
class AdventureOnMapModel : public QAbstractListModel
{
Q_OBJECT
public:
enum AdventureOnMapRoles {
AdventureIdRole = Qt::UserRole + 1,
TagIdRole,
NameRole,
DescRole,
ClueRole,
AwardRole,
GeoLatRole,
GeoLongRole
};
AdventureOnMapModel(QObject *parent = 0);
void addAdventureOnMap(const AdventureOnMap &AdventureOnMap);
int rowCount(const QModelIndex & parent = QModelIndex()) const;
QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;
protected:
QHash<int, QByteArray> roleNames() const;
private:
QList<AdventureOnMap> l_adventuresOnMap;
};
:
Q_INVOKABLE AdventureOnMapModel* buildAdventuresOnMap() const;
そして、私のようにQMLでそれを呼び出す モデルヘッダーはのとおりです。
MapItemView {
model: thisAdvendture.buildAdventuresOnMap()
//this returns AdventureOnMapModel*
delegate: MapQuickItem {
coordinate: QtPositioning.coordinate(geoLat,geoLong)
//Anhors pointer right in the middle of bottom
anchorPoint.x: image.width * 0.5
anchorPoint.y: image.height
sourceItem: Column {
Image { id: image; source: "../Resources/marker.png" }
Text { text: name;
font.bold: true
}
しかし、モデルが空(私が見るが、それはqDebug()
出力に充填されている)またはDOEのようです委任しないでください。私はその理由を見つけることができません。モデルのデータに間違ってアクセスしていますか?私は間違ってそれを委任していますか?