Qt的moc导致"未定义引用:"错误

erj*_*ang 3 qt

我在Qt中处理一个简单的绘图小部件(以下所有内容都在一个类中).在头文件中,我已经定义了

private:
QPointF translateToCanvas (QPointF input);
Run Code Online (Sandbox Code Playgroud)

在我定义的CPP文件中

QPointF translateToCanvas (QPointF input) {
    return input - QPointF(CANVAS_MARGIN_X, CANVAS_MARGIN_Y);
}
Run Code Online (Sandbox Code Playgroud)

代码中的其他地方,我称之为

QPointF newPoint = translateToCanvas(anotherPoint);
Run Code Online (Sandbox Code Playgroud)

每当我编译时,它都会给出错误"对MyClass :: translateToCanvas(QPointF)'的未定义引用",这发生在moc生成的内容中,实际上并不是我的文字代码.

Qt中可能导致此错误的原因是什么?(我正在使用Qt Creator和Qt 4.5.)

Log*_*ldo 10

这与Qt无关.

QPointF translateToCanvas (QPointF input) {
    return input - QPointF(CANVAS_MARGIN_X, CANVAS_MARGIN_Y);
}
Run Code Online (Sandbox Code Playgroud)

定义了一个名为translateToCanvas的独立函数,它与您在类中声明的私有方法无关,除了具有相同的名称.你要

QPointF MyClass::translateToCanvas (QPointF input) {
     return input - QPointF(CANVAS_MARGIN_X, CANVAS_MARGIN_Y);
}
Run Code Online (Sandbox Code Playgroud)