Qt 告诉我我的 SLOT 不存在,但是通过 make clean,让它不再抱怨

Posted

技术标签:

【中文标题】Qt 告诉我我的 SLOT 不存在,但是通过 make clean,让它不再抱怨【英文标题】:Qt tells me that my SLOT doesnt exist, but with a make clean, make it doesnt complain anymore 【发布时间】:2009-12-08 22:38:11 【问题描述】:

当我从我们的 SVN 下载一个新副本,然后运行我的程序时,Qt 告诉我我的一个 SLOTS 不起作用,但是使用方便的花花公子 make clean 然后 make,它似乎解决了问题。我继续在我的 PC 上更改代码,并且该消息再也不会显示。

C++ Qt 4.6 海合会

有人遇到过这个问题吗? 和想法?

谢谢

【问题讨论】:

【参考方案1】:

Qt 在构建时会创建一大堆关于 Q_OBJECT 类的元数据。该元数据存储在“moc”文件中,其中一个文件可能与您的 C++ 代码不一致。在版本控制系统中存储中间构建阶段通常是个坏主意。我建议运行make clean,然后查看您的 VCS 以找出哪些文件被删除,然后提交结果。

在svn中:

make clean
svn st     # you should see some files deleted
svn rm <all the deleted files that svn st showed>
svn ci -m "Cleaned out intermediate build stages"

【讨论】:

【参考方案2】:

我的猜测?您的存储库中有一个文件已被 make clean 删除,但未被 make 重新创建(可能是因为不再需要它),并且该文件中的某些内容导致了问题。

【讨论】:

【参考方案3】:

如果您将 .moc 文件存储在存储库中(您不应该),那么它们可能会与现实不同步。 make includes 也能解决问题吗?

当您执行make clean 时,会删除哪些内容?重新制作项目后都有什么?所有清理的文件都应该重新制作。如果他们不是,比如 Anon。说,其中一个可能正在做奇怪的事情。

【讨论】:

以上是关于Qt 告诉我我的 SLOT 不存在,但是通过 make clean,让它不再抱怨的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Game Maker Studio 告诉我我的 if 语句不起作用?

qt下c++语言,connect两个不同的类,这两个类在不同的cpp文件下,出现no such slot问题

为啥 Microsoft Graph API 告诉我我刚刚创建的事件仍然存在时被“@removed”?

Qt Creator中的没有的QCombobox类型

只允许我的域使用 CORS?

第二个存在条件不起作用