是什么导致了这个QT 4.7.3错误?

What's causing this QT 4.7.3 error?

本文关键字:错误 QT 是什么      更新时间:2023-10-16

我有一个程序,在 OpenSuse 11.2 和 QT 版本 4.5 中编译得很好。但是,当我使用 OpenSuse 11.4 和 QT 4.7.3 编译相同的程序时,我收到以下错误消息:

"This file was generated using the moc from 4.7.3. It cannot be used with the include    files from this version of Qt. The moc has changed too much"

谁能告诉我发生了什么?

发生此错误是因为您正在使用在一个版本的Qt上编译的项目。造成这种情况的主要原因是Qt使用moc工具创建用于信号槽处理和其他内容的胶水代码。

Moc 通过解析头文件来查找定义,如 Q_OBJECT、信号:、插槽:等。

此代码

与用于创建此代码的 Qt 版本完全绑定。在某些情况下,即使对于配置了一组不同选项的相同版本的Qt库,此代码也是完全不兼容的。

即使对于.pro中的某些更改也是如此,例如,使用CONFIG +=no_keywords会导致moc生成不同的胶水代码,允许Qt与其他库(如boost)一起使用,这些库使用相同的关键字(如Qt)提供信号槽机制。

因此,简而言之,每当您需要针对不同的Qt库编译Qt项目时,请确保执行以下操作:1.运行:使远端清洁2.运行:Qmake。3. 运行:制作

这将始终为您提供一个干净的构建树。

就我而言,这是因为我运行的是"qmake"而不是"qmake-qt4"。 "qmake"显然是Qt3。 我在Fedora Core 16上遇到了这个问题。

为什么它不是"qmake-qt3"和"qmake",这超出了我的理解。

为什么不使用新版本(在您的情况下是 4.7.3)和相应的头文件创建新的 moc。

   moc ****.h -o ***.moc