gpt4 book ai didi

c++ - QAbstractListModel 在 MapIteMVieW 中委托(delegate)

转载 作者:太空宇宙 更新时间:2023-11-04 13:15:34 25 4
gpt4 key购买 nike

我正在使用 QAbstractListModel 在 map 上构建一些 MapQuickItems,但我无法访问模型中的数据。模型标题如下:

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 访问模型,如:

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() 输出中被填充)或者没有委托(delegate),我找不到原因。我是否错误地访问了模型中的数据?我委派错了吗?

最佳答案

这不是完整的代码,您还需要发布 .cpp 文件。但我会猜测,我认为您没有正确实现 rowCount 和数据函数 - 它们应该使用 l_adventuresOnMap 成员变量为这两个函数返回正确的数据。

关于c++ - QAbstractListModel 在 MapIteMVieW 中委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37540430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com