#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
Другие вопросы по тегам