2016-05-31 13 views
1

私は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のようです委任しないでください。私はその理由を見つけることができません。モデルのデータに間違ってアクセスしていますか?私は間違ってそれを委任していますか?

答えて

0

これは完全なコードではありません.cppファイルも投稿する必要があります。しかし、私は推測して、あなたは正しくrowCountとデータ関数を実装していないと思う - それらの両方の関数の正しいデータを返すには、l_adventuresOnMapメンバ変数を使用する必要があります。

関連する問題