奇怪的QMetaObject错误

时间:2015-09-16 20:58:15

标签: c++ qt

我有一个班级" RegistrationList"它保留了指向三种不同类型注册的指针列表。我有一个函数calculateFees(),它应该返回其中一种注册类型的总注册费用。我应该使用QT元对象系统检查列表中是否有特定类型的注册实例,但是当我运行程序时,我收到以下错误:

C:\ Qt \ Qt5.3.0 \ Tools \ QtCreator \ bin \ build-a2-q1-Desktop_Qt_5_3_0_MinGW_32bit-Debug \ debug \ moc_registrationlist.cpp:63:错误:' staticMetaObject'不是' QList'的成员      {& QList :: staticMetaObject,qt_meta_stringdata_RegistrationList.data,         ^

我的calculateFees函数代码:

double RegistrationList::totalFees(QString t) {
    double total = 0.00;
    for (int i = 0; i <= this->size(); ++i) {
        if (attendeeList.at(i)->metaObject()->className() == t)
            total += this->at(i)->calculateFee();
    }
    return total;
}

1 个答案:

答案 0 :(得分:2)

QList不是从QObject派生的。

第一个google结果&#34;错误:&#39; staticMetaObject&#39;不是&#34;的成员: Link

  

这就是说QTreeWidgetItem不继承自QObject,这意味着你自己的单一继承类也不会从QObject继承。继承QObject是使用Q_OBJECT宏的先决条件之一,如果你像我一样,你会自动插入到任何与Qt GUI相关的类中。

     

如果您未使用子类中的任何元对象内容,例如信号/插槽或属性,只需取出Q_OBJECT宏。如果您需要使用信号和插槽,您还需要使您的子类从QObject中继承多次继承。如果你采取这种方式,请记住&#34;多重继承要求QObject为第一个&#34;否则你将得到与上面相同的错误,或类似于&#34; YourClass继承自两个QObject子类&#34;来自moc。

QTreeWidgetItem替换为QList,然后就可以了。