从 QStandardItem
派生时出现意外错误。我如何添加我的派生类是添加新>> 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
正确派生?
最佳答案
QStandardItem
不继承自 QObject
为了能够在 XmlItem
中使用信号/槽,您需要自己从 QObject 继承,即:
class XmlItem : public QObject, public QStandardItem
{
Q_OBJECT
//...
};
关于c++ - 如何从 QStandardItem 继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35072709/