Qt - 编译器无法识别“连接”

Posted

技术标签:

【中文标题】Qt - 编译器无法识别“连接”【英文标题】:Qt - compiler won't recognize "connect" 【发布时间】:2013-09-10 19:43:52 【问题描述】:

我正在使用 Qt 4.7,并且我有一部分带有信号和插槽的代码。它的设置和正常一样,即:

#include <QObject>

//Earlier code...
connect(my_thread, SIGNAL(started()), other_thread, SLOT(process()));
connect(my_thread, SIGNAL(finished()), third_thread, SLOT(some_slot()));
//Later code...

但是,当我构建它时,每条语句都会出错,说“C3861:'connect':未找到标识符”有人知道为什么会这样吗?谢谢!

【问题讨论】:

【参考方案1】:

如果您在不属于QObject 派生类的代码中使用连接,请在连接前加上QObject::,这样代码将变为:

//Earlier code...
QObject::connect(my_thread, SIGNAL(started()), other_thread, SLOT(process()));

LE:基本上你调用静态 connect 方法,当你不在 QObject(或 QObject 派生类)的范围内时,你需要完全指定 connect 你想调用,否则编译器找不到它(或者它可能在当前范围内找到错误的连接)

【讨论】:

在不是从QObject派生的类中使用connect可以吗? @Ayxan 是的,没关系。可以从任何可以访问需要连接的 2 个对象的地方进行连接,这可能就是 connect 函数是 QObject 类的静态成员函数的原因。

以上是关于Qt - 编译器无法识别“连接”的主要内容,如果未能解决你的问题,请参考以下文章