QtCore/QTextCodec 在 Qt 6 中找不到

QtCore/QTextCodec not found in Qt 6

升级到Qt 6.0后,编译器告诉我

qzxing/src/QZXing.cpp:16: error: 'QtCore/QTextCodec' file not found
qzxing/src/QZXing.cpp:16:10: fatal error: 'QtCore/QTextCodec' file not found
#include <QtCore/QTextCodec>
         ^~~~~~~~~~~~~~~~~~~
qzxing/src/QZXing.cpp:16:10: note: did not find header 'QTextCodec' in framework 'QtCore' (loaded from '/Applications/Qt/6.0.0/clang_64/lib')

根据Qt's documentation,加上QT += core5compat即可导入。 但是,编译器告诉我“QT 中的未知模块:core5compat”。

如何解决这个问题?

QTextCodec class 已移至 core5compat 子模块,因此仅在 .pro 中添加它是不够的,但您必须将导入更正为:

#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
    #include <QtCore/QTextCodec>
#else
    #include <QtCore5Compat/QTextCodec>
#endif

或者干脆

#include <QTextCodec>

另一方面,您必须安装此模块,因为默认情况下它没有,为此您必须使用 维护工具

  1. 确保您已经安装了“Qt 5 兼容性模块”。
  2. 在 .pro 文件中添加 QT += core5compat
  3. #include <QtCore/QTextCodec>替换为#include <QTextCodec>

在.pro文件中添加greaterThan(QT_MAJOR_VERSION,5): QT += core5compat