我想在Qt中的一个单独文件中创建一个类,然后在我的主文件中使用这个类(背景:辅助线程更新GUI)。因此,我编写了ReadDPC.h-file:
class ReadDPC: public QThread
{
//First edit:
Q_OBJECT
//End of first edit
public:
void run();
signals:
void currentCount(int);
};在我的ReadDPC.cpp-file中:
void ReadDPC::run()
{
while(1)
{
usleep(50);
int counts = read_DPC();
emit currentCount(counts);
}
}read_DPC()是一个函数,它返回一个也放在cpp文件中的int-value。
但是,当我想编译它时,我会得到错误的undefined reference to ReadDPC::currentCount(int)。为什么?我怎么才能解决这个问题?
编辑:添加了Q_Object-Macro,没有解决方案。
发布于 2014-10-15 14:11:23
当您要使用Qt信号和插槽机制时,您必须在类的定义顶部添加Q_OBJECT宏,以便生成正确的moc_代码。
为何会这样呢?
元对象编译器moc是处理Qt的C++扩展的程序. moc工具读取一个C++头文件。如果它找到一个或多个包含Q_OBJECT宏的类声明,它将生成一个包含这些类的元对象代码的C++源文件。除其他外,信号和插槽机制、运行时类型信息和动态属性系统都需要元对象代码。
http://qt-project.org/doc/qt-4.8/moc.html#moc
https://stackoverflow.com/questions/26384577
复制相似问题