qobject_cast没有Q_OBJECT宏错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qobject_cast没有Q_OBJECT宏错误相关的知识,希望对你有一定的参考价值。

我有一个由QFutureWatcher触发的插槽。我正在试图让发送者获得结果

QFutureWatcher<QPair<QImage,QString>>* QFW = qobject_cast<QFutureWatcher<QPair<QImage,QString>>*>(sender());

但继续得到

error: static assertion failed: qobject_cast requires the type to have a Q_OBJECT macro

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

答案

你必须将Q_OBJECT放在类定义中,如下所示:

class MyClass : public QObject
{
    Q_OBJECT
 // ^^^^^^^^^^
public:
    MyClass();
/*...*/
}

以上是关于qobject_cast没有Q_OBJECT宏错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 static_assert 检查 Q_OBJECT 宏

如何在 Xcode 中使用 Q_OBJECT 宏编译头文件?

急求Q_OBJECT问题

如果 Q_OBJECT 宏被其他宏删除,则无法编译 MOC 文件:头文件不包含 <QObject>

如果我只使用插槽,是不是需要使用 Q_OBJECT 宏?

error C2338: No Q_OBJECT in the class with the signal (NodeCreator.cpp)