我正在尝试从qt(使用qt creator 3.5.1,从qt 5.5.1)改编一个简单的例子来创建一个新的qml类型 . 这是一个琐碎的新类型:
class Person : public QObject
{
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE setName)
Q_PROPERTY(int shoeSize READ shoeSize WRITE setShoeSize)
public:
Person(QObject *parent = 0): QObject(parent), m_shoeSize(0) {}
QString name() const { return m_name; }
void setName(const QString & name) { m_name = name; }
int shoeSize() const { return m_shoeSize; }
void setShoeSize(int s) { m_shoeSize = s; }
private:
QString m_name;
int m_shoeSize;
};
当我尝试注册时:
qmlRegisterType<Person>("People", 1,0, "Person");
我明白了
体系结构x86_64的未定义符号:“Person :: qt_metacall(QMetaObject :: Call,int,void **)”,引自:main.o中的QQmlPrivate :: QQmlElement的vtable“Person :: qt_metacast(char const *)” ,引自:......
我想我需要在.pro文件中添加一个“库”,但我不知所措 . 有任何想法吗?
我已经有以下内容:
QT += core qml quick widgets
1 回答
正如tpr所建议的那样:该示例在单独的.h / .cpp文件中包含Person . 当我这样做时,程序成功编译 . 没想到 .