QStandardItem派生时,出现意外错误。我如何添加派生类是Add New >> C++ Class。选择基类作为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/

10-11 18:22