未声明的标识符"QVariant"将旧版Qt 4转换为5

Undeclared identifier 'QVariant' convert legacy Qt 4 to 5

本文关键字:Qt 转换 标识符 QVariant 未声明      更新时间:2023-10-16

我需要将QT遗产代码从4.7转换为5.8,我在QT Creator 4.2.1 Clang 7.0(Apple)64bit

中有一个编译错误

查找.cpp文件

bool queries::insert(const QString &tableName_, const QMap<QString, QVariant> &values_) const

.cpp中的错误./src/classes/queries.cpp:283:15:错误:'insert'''的管行定义与指向'insert'insert'

在标题文件中查看

bool insert(const QString &tableName_, const QMap<QString, QVariant> &values_) const;

.h中的错误../src/classes/queries.h:157:64:错误:使用未宣布的标识符'qvariant'错误指向'qvariant>'

找到了类似的stackoverflow查询

好...那么替换是什么?

解析定义时, QVariant是已知类型。但是,当声明被解析时,QVariant尚不清楚。因此,声明无效,编译器不能忽略它。

#include <QVariant>添加到标题文件以解决该问题。

它破裂了,因为某些QT标头曾经包含<QVariant>,并且您隐含地依赖于此。随着QT的更新,此类相互依赖性被最小化,现在仅包括在自由式翻译单元中编译时使其有效的最低限制。因此,您破裂的代码已暴露出来。