奇怪的QMetaObject错误
Strange QMetaObject error
我有一个类"RegistrationList",它保存了一个指向三种不同类型注册的指针列表。我有一个函数calculateFees(),它应该返回一种注册类型的总注册费用。我应该使用QT元对象系统来检查特定类型注册的实例列表,但当我运行程序时,我得到以下错误:
C:QtQt5.3.0ToolsQtCreatorbinbuild-a2-q1-Desktop_Qt_5_3_0_MinGW_32bit-Debugdebugmoc_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;
}
QList不是从QObject派生的
第一个谷歌结果的"错误:'staticMetaObject'不是"的成员;链接
这就是说QTreeWidgetItem不从QObject继承,这意味着您自己的单继承类也不从QObject继承。继承QObject是使用Q_OBJECT宏的先决条件之一,如果你像我一样,你会自动将它插入到任何Qt GUI相关的类中。
如果你不使用任何元对象的东西在你的子类,如信号/槽或属性,只是拿出Q_OBJECT宏。如果您需要使用信号和槽,您还需要使您的子类从QObject多重继承。如果您采用这种方式,请记住"多重继承要求QObject必须是first",否则您将得到与上面相同的错误,或者类似于"YourClass继承自两个QObject子类"的错误。从moc.
用QList
代替QTreeWidgetItem
,就可以了
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- QMetaObject invokeMethod的基于函数指针的语法
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 奇怪的QMetaObject错误
- 在 Ubuntu QT 上构建时出现"QMetaObject::connectSlotsByName: no match signal for"错误