QtCore / QTextCodec не найден в Qt 6

#c #qt #qt6

#c #qt #qt6

Вопрос:

После обновления до 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».

Как решить эту проблему?

Комментарии:

1. Для новых пользователей Qt 6 вы можете использовать QStringConverter и его производные классы: QStringDecoder и QStringEncoder .

Ответ №1:

  1. Убедитесь, что у вас установлен «Модуль совместимости Qt 5».
  2. Добавьте QT = core5compat в файл .pro.
  3. Заменить #include <QtCore/QTextCodec> на #include <QTextCodec>

Установщик Qt

Комментарии:

1. Поскольку QTextCodec теперь находится в библиотеке совместимости, существует ли класс замены?

2. @albert QStringConverter — это класс замены QTextCodec.

Ответ №2:

Класс QTextCodec был перемещен в подмодуль core5compat, поэтому недостаточно добавить его в .pro, но вы должны исправить импорт в:

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

Или просто

 #include <QTextCodec>
 

С другой стороны, вы должны установить этот модуль, поскольку он не поставляется по умолчанию, и для этого вы должны использовать инструмент обслуживания.

Комментарии:

1. Поскольку QTextCodec теперь находится в библиотеке совместимости, существует ли класс замены?

2. @albert QStringConverter — это класс замены QTextCodec.

Ответ №3:

добавить greaterThan(QT_MAJOR_VERSION,5): QT = core5compat в файл .pro

Комментарии:

1. Пожалуйста, будьте более подробными, предоставьте исчерпывающий ответ.