c++ - 如何从 QStandardItem 继承?

标签 c++ qt

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/

相关文章:

c++ - 在 Windows 上编译 qml-material 时出错

qt - 如何从qt中的视频文件中提取图像?

c++ - 将 QAbstractTableModel 与 Qml TableView 一起使用仅显示第一列

c++ - 你使用 Qt,你为什么使用它?

c++ - Qt QPainterpath.h 错误

c++ - qDebug 打印出错误的数字

统计分布类型的 C++ 模板用法

c++ - 在 C++ 中传递具有移动语义的 unique_ptr vector

c++ - 重置属性页设置 Visual Studio C 2010 Express

c++ - 如何实际上在C++中 “clear”一个 vector ?