如何从QStandardItem继承?

时间:2016-01-28 21:46:34

标签: c++ qt

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正确派生?

1 个答案:

答案 0 :(得分:2)

QStandardItem不会继承QObject

为了能够在XmlItem中使用信号/槽,您需要自己继承QObject,即:

class XmlItem : public QObject, public QStandardItem 
{
     Q_OBJECT

     //...
};
相关问题