首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇异QMetaObject误差

奇异QMetaObject误差
EN

Stack Overflow用户
提问于 2015-09-16 20:58:15
回答 1查看 654关注 0票数 0

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

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

我的calculateFees函数代码:

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-16 21:31:46

QList不是从QObject派生的。

第一次谷歌的结果“错误:'staticMetaObject‘不是成员”:链接

这意味着QTreeWidgetItem不从QObject继承,这意味着您自己的单继承类也不从QObject继承。从QObject继承是使用Q_OBJECT宏的先决条件之一,如果您和我一样,就会自动插入到任何Qt相关类中。 如果您没有使用子类中的任何元对象(例如信号/插槽或属性),只需取出Q_OBJECT宏即可。如果您需要使用信号和插槽,您还需要使您的子类从QObject继承。如果采用这种方式,请记住“多重继承要求QObject是第一位的”,否则您将得到与上面相同的错误,或者类似于"YourClass从两个QObject子类继承“的内容。

QTreeWidgetItem替换为QList,这样就可以了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32618571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档