Qt 如果我只使用插槽,是否需要使用Q_对象宏?

Qt 如果我只使用插槽,是否需要使用Q_对象宏?,qt,Qt,我有几个类正在使用QWebSocket,似乎我能够调用connect来处理connect、close等的回调。我的调试器说一切都正常工作 如果我在我的类中使用Q_OBJECT宏,那么我就必须在我的cmake中运行MOC编译器,这在尝试从我的类创建lib并在另一个应用程序中使用它时是一件很麻烦的事,这将导致关于它的另一篇文章 如果我删除Q_对象宏,没有它,一切看起来都可以正常构建和运行。所以,问题是,若我只是将QWebSocket的信号连接到插槽,我真的需要它吗 一个相关职位是: 但是,这是为了解

我有几个类正在使用QWebSocket,似乎我能够调用connect来处理connect、close等的回调。我的调试器说一切都正常工作

如果我在我的类中使用Q_OBJECT宏,那么我就必须在我的cmake中运行MOC编译器,这在尝试从我的类创建lib并在另一个应用程序中使用它时是一件很麻烦的事,这将导致关于它的另一篇文章

如果我删除Q_对象宏,没有它,一切看起来都可以正常构建和运行。所以,问题是,若我只是将QWebSocket的信号连接到插槽,我真的需要它吗

一个相关职位是: 但是,这是为了解决由于不使用MOC编译器而导致的错误。我知道怎么做,但我怀疑我是否首先需要Q_对象。

来自Qt:

请注意,对于实现信号、插槽或属性的任何对象,Q_OBJECT宏都是必需的

从Qt:

请注意,对于实现信号、插槽或属性的任何对象,Q_OBJECT宏都是必需的


如果在类中使用信号/插槽,则需要使用
Q_对象
。除非你不使用信号连接,否则在没有宏的情况下它真的可以工作。如果你在你的类中使用信号/插槽,则需要使用
Q_OBJECT
。除非你不使用信号连接,否则在没有宏的情况下它真的可以工作。那么为什么在使用插槽的情况下它不工作,而不是使用信号呢?此外,为什么我可以在Qt5的connect中使用lambda作为插槽?似乎有一些争论,请随意进入“未定义/不支持”的世界!我没有维护您的代码:)那么,为什么它在使用插槽时没有它就可以工作,而不是使用信号?此外,为什么我可以在Qt5的connect中使用lambda作为插槽?似乎有一些争论,请随意进入“未定义/不支持”的世界!我没有维护您的代码:)