ПУСТО

пятница, 26 июня 2015 г.

Переход от Qt4 к Qt5

Это так, заметки для себя. Частичный перевод.
Модульность Qt требует некоторых изменений конфигурации проекта, при переносе его с Qt4 на Qt5. Это, использование иных подключаемых заголовочных файлов, и иная конфигурация проекта (изменения в * .pro файле).

QtWidgets в Qt5 это отдельный модуль

 

Пример ошибки компиляции

 

 

Решение


Добавить в ваш  *.pro файл:
А так же заменить везде
на
Этого в принципе достаточно,  но иногда вам может потребоваться, чтобы подключение заголовочного файла было более явным:


QtWebKitWidgets в Qt5 это так же отдельный модуль


Пример ошибки компиляции



Решение

 

Добавить в ваш  *.pro файл:
А так же заменить везде
на

QPrinter в Qt5


Если ваш код имеет следующие строки:
добавьте следующую строку в ваш файл проекта:
И опять же, подключение заголовочных фалов должно быть таким:

Методы ToAscii() и fromAscii() в Qt5 считаются устаревшими


Замените все экземпляры
fromAscii ()
ToAscii ()
на
fromLatin1 ()
toLatin1 ()

Например, если код Qt4 был следующим:
То в Qt5 он должен быть изменен на:

QCoreApplication::UnicodeUTF8 в Qt5 устарела


Нужно совершить замену как в примере ниже.
Код в Qt4:
В Qt5 должен быть заменен на:

QWorkspace в Qt5 устарела


Этот класс в Qt5 устарел и был заменен классом QMdiArea. Новый класс имеет аналогичный API как и у QWorkspace и при переносе приложений где он используется нужно будет изменить названия нескольких методов, сигналов и слотов. А так же заменить везде:
На

Проблемы в Qt5 с QDrag


Приложения Qt4 имеющие подобную строку

при компиляции в Qt5 будут выдавать ошибку

Для исправления, подключите заголовочный файл:

qFindChildren в Qt5 устарела


Появляется ошибка:
Чтобы решить эту проблему замените qFindChildren на findChildren, например, следующий код:
должен быть изменен на код:

qVariantValue в Qt5 устарела


Появляется ошибка:
Например, код в Qt4:
В Qt5 меняем на:
И так же, например, код в Qt4:
В Qt5 меняем на:

qVariantCanConvert в Qt5 устарела


Замените
На

Qt::escape в Qt5 устарела


Появляется ошибка:
Например, код в Qt4:
В Qt5 меняем на:

QDesktopServices::storageLocation в Qt5 устарела


Появляется ошибки:
Например, код в Qt4:
В Qt5 меняем на:

CONFIG+=qtestlib в Qt5 устарела


Если у вас есть в файле проектастрока CONFIG+=qtestlib компилятор предупредит вас в окне компиляции, но код будет работать как обычно

Причуды в Qt5 с QWeakPointer


Следующий код в Qt4
В Qt5 вызывает появление ошибки
Для исправления, добавте в файл проекта строку

Если в Qt5 пропала библиотека QtConcurrent


Появляется ошибки:
В Qt4, QtConcurrent был частью QtCore, и не было необходимости подключать дополнительные заголовочные файлы. Но в Qt5 использование QtConcurrent иначе. Например, если есть код
То нужно подключить заголовочный файл:
и добавить следующую строку в файл проекта:

В Qt5 точность QTimer по умолчанию больше не до миллисекунд


В Qt5 QUrl addQueryItem переехал в QUrlQuery


В Qt5 QAbstractItemModel изменен


Qt5 - Развертывание на системах без C++11


Нужна перекомпиляция исходников.

Fixing #include<> Headers


Этот документ перевод этого.

Так же рекомендуемая литература:

C++ API Changes
The porting guide
Porting Desktop Applications from Qt 4 to Qt 5
Porting from Qt 4 to Qt 5
Automated porting from Qt 4 to Qt 5

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

Отправить комментарий