qobject_cast 无 Q_OBJECT 宏错误

JLe*_*Lev 5 c++ qt casting

我有一个由 QFutureWatcher 触发的插槽。我正在尝试投射发件人以获取结果

QFutureWatcher<QPair<QImage,QString>>* QFW = qobject_cast<QFutureWatcher<QPair<QImage,QString>>*>(sender());
Run Code Online (Sandbox Code Playgroud)

但不断得到

error: static assertion failed: qobject_cast requires the type to have a Q_OBJECT macro
Run Code Online (Sandbox Code Playgroud)

我不太确定这里有什么问题,这些都是 Qt 内置类型,所以我做错了什么?

Dar*_*boy 2

您必须将 Q_OBJECT 放入类定义中,如下所示:

class MyClass : public QObject
{
    Q_OBJECT
 // ^^^^^^^^^^
public:
    MyClass();
/*...*/
}
Run Code Online (Sandbox Code Playgroud)