这是我的代码:http://pastebin.com/57hXKCYm
以下是我的错误: main.cpp:32: error:对“`vtable for SongObject”的未定义引用
当我从Q_OBJECT类中删除SongObject时,错误就会消失,应用程序就会启动,但是在QML中使用songList时,它会说名称是未定义的,颜色是未定义的。这是我的QML:
ListView {
width: 100; height: 100
model: allSongObjects
delegate: Rectangle {
height: 25
width: 100
color: {
console.log(model.modelData.name)
return color
}
Text { text: name }
}
}下面是如何将songList传递给QML:
engine.rootContext()->setContextProperty("allSongObjects", QVariant::fromValue(getAllSongs(db)));我是C++的新手,所以我确信这个问题对这里的人来说是非常明显的。我很感激我能得到的任何帮助。我只想知道为什么我会遇到hte问题,以及我的代码应该是怎样的,当我看到修正的代码时,我可能会理解为什么应该是这样的。
谢谢你的帮助。
发布于 2015-12-14 16:16:17
头文件写得不正确。更正(和工作)标头是
#ifndef SONG_OBJECT_MAIN
#define SONG_OBJECT_MAIN
#include <QObject>
class SongObject : public QObject
{
Q_OBJECT
Q_PROPERTY(QString path READ path CONSTANT)
Q_PROPERTY(QString title READ title CONSTANT)
Q_PROPERTY(QString album READ album CONSTANT)
Q_PROPERTY(QString artist READ artist CONSTANT)
Q_PROPERTY(QString art READ art CONSTANT)
QString m_path;
QString m_title;
QString m_album;
QString m_artist;
QString m_art;
QString path() { return m_path;}
QString title() { return m_title;}
QString album() { return m_album;}
QString artist() {return m_artist;}
QString art() {return m_art;}
public:
explicit SongObject(const QString &path, const QString &title, const QString &album, const QString &artist, const QString &art) :
QObject(),
m_path(path),
m_title(title),
m_album(album),
m_artist(artist),
m_art(art)
{}
};
#endif // SONG_OBJECT_MAINhttps://stackoverflow.com/questions/34242510
复制相似问题