从QStandardItem
派生时,我遇到意外错误。我如何添加我的派生类是Add New>> C ++类。选择基类为QObject
,创建课程后,我使用QObject
重命名QStandardItem
。
#include <QStandardItem>
class XmlItem : public QStandardItem
{
Q_OBJECT
public:
//explicit XmlItem(QObject *parent = 0);
explicit XmlItem(QStandardItem *parent = 0);
signals:
public slots:
};
XmlItem::XmlItem(QStandardItem *parent) : QStandardItem()
{
}
这会产生以下错误(其中有更多错误)
\debug\moc_XmliIem.cpp:64: error: C2039: 'staticMetaObject' : is not a member of 'QStandardItem'
\debug\moc_XmliIem.cpp:71: error: C2227: left of '->metaObject' must point to class/struct/union/generic type
\debug\moc_XmliIem.cpp:71: error: C2227: left of '->dynamicMetaObject' must point to class/struct/union/generic type
如果我发表评论Q_OBJECT
,错误就会消失,但显然我需要它,因为我会有信号和插槽。
为什么我会收到这些错误以及如何从QStandardItem
正确派生?
答案 0 :(得分:2)
QStandardItem
不会继承QObject
为了能够在XmlItem
中使用信号/槽,您需要自己继承QObject,即:
class XmlItem : public QObject, public QStandardItem
{
Q_OBJECT
//...
};