#include <QtWidgets> не работает в Qt 4
Разработчик добавил функцию к нашему программному обеспечению, используя QtWidgets, которая, насколько я могу судить, является функцией QT5. Проблема в том, что наше программное обеспечение все еще разработано для QT4, и мы пока не можем перейти на последнюю версию QT. Новая функция прекрасно работает при компиляции в QT5, но при попытке компилирования с использованием QT 4.8.5 выдает следующую ошибку.
src\qt\snapwidget.h:3: error: QtWidgets: No such file or directory
#include <QtWidgets>
^
Есть ли документация по обратному портированию QtWidgets на более старую версию QT? Возможно, кто-то готовил что-то вроде виджетов до того, как это стало нативной функцией.
1 ответ
Виджеты не являются функцией Qt 5. Они в Qt с первого дня.
В общем, я советую не использовать такие модули для каждого модуля. Они добавят все включения для данного модуля, значительно увеличив время компиляции. Вместо этого вы можете использовать
#include <QClass>
который будет работать так же хорошо, и потребует только корректировки .pro
Файл, который я сказал ниже (одно место, вместо изменения всех исходных файлов).
Ваша проблема в том, что в Qt 4 нет модуля "QtWidgets". Виджеты в Qt 4 были в модуле "gui".
Следовательно, "эквивалентная" строка в Qt 4
#include <QtGui>
Ты можешь использовать QT_VERSION
чтобы ваш код на C++ работал как в Qt 4, так и в 5:
#include <QtGlobal>
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
# include <QtWidgets>
#else
# include <QtGui>
#endif
Добавьте похожую логику в .pro
файл для связи с widgets
модуль. И Qt 4, и Qt 5 по умолчанию связывают только core
и gui
модули, но, как я только что сказал, это не приносит вам виджеты в Qt 5:
greaterThan(QT_MAJOR_VERSION, 4):QT += widgets