Russian Qt Forum

Qt => Вопросы новичков => Тема начата: zzzseregazzz от Сентябрь 19, 2013, 08:46



Название: Насколько сложен переход с Qt 4 на Qt 5?
Отправлено: zzzseregazzz от Сентябрь 19, 2013, 08:46
Добрый день.
Перенос проектов с Qt 3 на Qt 4 был очень тяжелым.
К чему готовиться, если встанет задача перенести проект Qt 4 на Qt 5?


Название: Re: Насколько сложен переход с Qt 4 на Qt 5?
Отправлено: kambala от Сентябрь 19, 2013, 11:13
будет намного легче. весьма высока вероятность, что всё заработает без единой правки кода.


Название: Re: Насколько сложен переход с Qt 4 на Qt 5?
Отправлено: Bepec от Сентябрь 19, 2013, 12:43
Опасность при работе с отсохшими в Qt5 компонентами. :)

Но практически всё то же самое что и в Qt4.


Название: Re: Насколько сложен переход с Qt 4 на Qt 5?
Отправлено: xokc от Сентябрь 19, 2013, 15:02
весьма высока вероятность, что всё заработает без единой правки кода.
Ну тут, пожалуй, слегка преувеличено. Из того, с чем столкнулись мы:
1. Новый формат системы плагинов
2. Для GUI проектов пришлось добавить в pro файлы QT += widgets
3. Заменить QTextCodec::setCodecForTr(codec) на QTextCodec::setCodecForLocale(codec)
Но, в целом, всё прошло действительно достаточно безболезненно.


Название: Re: Насколько сложен переход с Qt 4 на Qt 5?
Отправлено: kambala от Сентябрь 19, 2013, 18:29
у меня большая часть правок состояла просто в разных инклудах (плагины не использую). единственное, где пришлось повозиться — док-меню и unified toolbar на Mac OS X (для этого теперь нужно скачивать отдельный компонент).


Название: Re: Насколько сложен переход с Qt 4 на Qt 5?
Отправлено: LisandreL от Сентябрь 21, 2013, 08:28
Не очень сложно.
Кроме выше описанного:
1) Исходники теперь только в utf-8. Ну в прочем если вы кирилицу не используете, то проблем нет. Если используете, то iconv вам в руки.
2) Некоторые методы-алиасы объявлены устаревшими. Например я встретил QAudioFormat::setFrequency => QAudioFormat::setSampleRate
3) Возможны и другие мелочи. Например у меня в QTcpSocket'е перестал работать seek (причём видно это только на отладочном выводе). Пропускаю теперь ненужные байты read'ом.

В общем-то в API изменений немногим больше, чем при смене минорной версии.
Таких проблем как при Qt 3 => Qt 4 точно не будет.


Название: Re: Насколько сложен переход с Qt 4 на Qt 5?
Отправлено: zzzseregazzz от Сентябрь 23, 2013, 16:02
Цитировать
2) Некоторые методы-алиасы объявлены устаревшими. Например я встретил QAudioFormat::setFrequency => QAudioFormat::setSampleRate

Любимое занятие разработчиков Qt - переименование методов.


Название: Re: Насколько сложен переход с Qt 4 на Qt 5?
Отправлено: lit-uriy от Сентябрь 24, 2013, 18:01
"Любимое занятие разработчиков Qt - переименование методов."
Я за то, чтобы названия классов и методов были естественными.

А вообще разработчикам Qt сделать инструмент типа Qt3To4, только для Qt4->Qt5 было бы совсем не лишне.


Название: Re: Насколько сложен переход с Qt 4 на Qt 5?
Отправлено: lit-uriy от Декабрь 29, 2016, 12:47
Попробовал портануть не безызвестный набор виджетов "Qt embedded widgets", хотел получить работу и с Qt4 и с Qt5
Столкнулся с 2-мя задачами:
  • правка pro-файла - сделал
    • greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    • Втыкание $PWD во многих местах, для нормальной теневой сборки. Это было полезно сделать ещё и для Qt4, но тогда поленился
  • правка исходников - частично сделал (см. ниже)
    • #include, особенно попотел из-за конструкций <QtGui/QDesktopWidget>
    • Добавлена условная компиляция в строках типа foo->setStyle(new QWindowsStyle());, т.к. такого стиля в Qt5 нет

Теперь программа запускается и в большей степени работает.

Но столкнулся с 2-мя проблемами:
  • Программа падала, при вращении колеса мышки на всплывающем виджете - исправил
    • Виджет выглядит так: (https://gitlab.com/lit-uriy/qt_embedded-widgets/uploads/c8965bfc2cbf60660353af4405cc4cb2/Screenshot_8.png)
    • В Qt5, почему-то в отличие от Qt4, при входе в обработчик события weelEwent() событие имеет статус "ignored", а в Qt4 всегда было "accepted". Т.к. по замыслу авторов программы если колесо мышки крутить в любом месте всплывающего виджета, то события колеса мышки пересылаются на виджет "колёсика". В случае с Qt5 это приводило к лавине событий и софтина падала.
      Сделал просто - при входе в обработчик стал вызывать метод accept() для события. Хотя в документации текст тот же что и для Qt4 - " если нужно проигнорировать событие, вызовите явно ignore()", т.е. вроде как по умолчанию оно принимается. (8a533b073cfbe1060ea28f9f898cda1ff176ff4f (https://gitlab.com/lit-uriy/qt_embedded-widgets/commit/8a533b073cfbe1060ea28f9f898cda1ff176ff4f))
       
  • Рисующийся график в Qt5 почему-то имеет толстые (по высоте) участки, в отличие от Qt4 - пока разбираюсь в причинах
    • Выглядит так: Qt4 (https://gitlab.com/lit-uriy/qt_embedded-widgets/uploads/af669887c1f509783faad3c244e8a5e0/Screenshot_7.png), Qt5 (https://gitlab.com/lit-uriy/qt_embedded-widgets/uploads/97aee84017e3410a6ec329d3c8c9d7c1/Screenshot_9.png)

Может кто-то сталкивался с подобной проблемой рисования и знает что нужно поправить?

П.С.
Если эта софтина кому-нибудь интересна, то исходники тут (https://gitlab.com/lit-uriy/qt_embedded-widgets)


Название: Re: Насколько сложен переход с Qt 4 на Qt 5?
Отправлено: panAlexey от Декабрь 29, 2016, 16:32
1) Исходники теперь только в utf-8. Ну в прочем если вы кирилицу не используете, то проблем нет. Если используете, то iconv вам в руки.
Как раз utf-8 и должен устранить проблемы с кирилицей. На то оно утф. Это у некоторых разрабов в голове проблемы.


Название: Re: Насколько сложен переход с Qt 4 на Qt 5?
Отправлено: kambala от Декабрь 29, 2016, 17:29
то наверняка послание для любителей 1251


Название: Re: Насколько сложен переход с Qt 4 на Qt 5?
Отправлено: Bepec от Декабрь 29, 2016, 21:59
Это недоделка разрабов креатора... С их "непереносимостью" кириллицы в дебаге.


Название: Re: Насколько сложен переход с Qt 4 на Qt 5?
Отправлено: mitrich от Январь 09, 2017, 16:33
Добавлена условная компиляция в строках типа foo->setStyle(new QWindowsStyle());, т.к. такого стиля в Qt5 нет
Сам стиль есть, вот только все классы-наследники QStyle (кроме QCommonStyle и QProxyStyle) теперь приватные и использовать их можно только через QStyleFactory и QProxyStyle.


Название: Re: Насколько сложен переход с Qt 4 на Qt 5?
Отправлено: lit-uriy от Январь 10, 2017, 06:08
mitrich, спасибо за наводку, будет время гляну.