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 - 编译器无法识别“连接”的主要内容,如果未能解决你的问题,请参考以下文章

Qt 无法识别标准库

Qt 5.0.1 中的“配置”无法识别

Qt:子类中无法识别继承的信号

Qt4 现有插槽无法识别

在 Qt 应用程序中似乎无法识别插槽 [重复]

Qt Creator - 无法使用调试器:program.exe 不是可执行格式:文件格式无法识别