После обновления до 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, его можно импортировать, добавив QT += core5compat
.
Однако компилятор сказал мне, что «Неизвестный модуль (модули) в QT: core5compat».
Как решить эту проблему?
Класс QTextCodec был перемещен в подмодуль core5compat, поэтому недостаточно добавить его в .pro, но вы должны исправить импорт на:
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
#include <QtCore/QTextCodec>
#else
#include <QtCore5Compat/QTextCodec>
#endif
Или просто
#include <QTextCodec>
С другой стороны, вы должны установить этот модуль, так как он не поставляется по умолчанию, и для этого вы должны использовать Maintenance Tool.
Поскольку QTextCodec теперь живет в библиотеке совместимости, есть ли класс замены?
@albert QStringConverter - это класс замены QTextCodec.
QT += core5compat
в файл .pro.#include <QtCore/QTextCodec>
на #include <QTextCodec>
Поскольку QTextCodec теперь живет в библиотеке совместимости, есть ли класс замены?
@albert QStringConverter - это класс замены QTextCodec.
добавить greaterThan(QT_MAJOR_VERSION,5): QT += core5compat
в файл .pro
Будьте добры, дайте исчерпывающий ответ.
Для новых пользователей Qt 6 вы можете использовать QStringConverter и его производные классы: QStringDecoder и QStringEncoder.