Russian Qt Forum
Ноябрь 24, 2024, 11:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Насколько сложен переход с Qt 4 на Qt 5?  (Прочитано 13048 раз)
zzzseregazzz
Гость
« : Сентябрь 19, 2013, 08:46 »

Добрый день.
Перенос проектов с Qt 3 на Qt 4 был очень тяжелым.
К чему готовиться, если встанет задача перенести проект Qt 4 на Qt 5?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Сентябрь 19, 2013, 11:13 »

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Bepec
Гость
« Ответ #2 : Сентябрь 19, 2013, 12:43 »

Опасность при работе с отсохшими в Qt5 компонентами. Улыбающийся

Но практически всё то же самое что и в Qt4.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #3 : Сентябрь 19, 2013, 15:02 »

весьма высока вероятность, что всё заработает без единой правки кода.
Ну тут, пожалуй, слегка преувеличено. Из того, с чем столкнулись мы:
1. Новый формат системы плагинов
2. Для GUI проектов пришлось добавить в pro файлы QT += widgets
3. Заменить QTextCodec::setCodecForTr(codec) на QTextCodec::setCodecForLocale(codec)
Но, в целом, всё прошло действительно достаточно безболезненно.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Сентябрь 19, 2013, 18:29 »

у меня большая часть правок состояла просто в разных инклудах (плагины не использую). единственное, где пришлось повозиться — док-меню и unified toolbar на Mac OS X (для этого теперь нужно скачивать отдельный компонент).
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #5 : Сентябрь 21, 2013, 08:28 »

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

В общем-то в API изменений немногим больше, чем при смене минорной версии.
Таких проблем как при Qt 3 => Qt 4 точно не будет.
Записан
zzzseregazzz
Гость
« Ответ #6 : Сентябрь 23, 2013, 16:02 »

Цитировать
2) Некоторые методы-алиасы объявлены устаревшими. Например я встретил QAudioFormat::setFrequency => QAudioFormat::setSampleRate

Любимое занятие разработчиков Qt - переименование методов.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #7 : Сентябрь 24, 2013, 18:01 »

"Любимое занятие разработчиков Qt - переименование методов."
Я за то, чтобы названия классов и методов были естественными.

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

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #8 : Декабрь 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-мя проблемами:
  • Программа падала, при вращении колеса мышки на всплывающем виджете - исправил
    • Виджет выглядит так:
    • В Qt5, почему-то в отличие от Qt4, при входе в обработчик события weelEwent() событие имеет статус "ignored", а в Qt4 всегда было "accepted". Т.к. по замыслу авторов программы если колесо мышки крутить в любом месте всплывающего виджета, то события колеса мышки пересылаются на виджет "колёсика". В случае с Qt5 это приводило к лавине событий и софтина падала.
      Сделал просто - при входе в обработчик стал вызывать метод accept() для события. Хотя в документации текст тот же что и для Qt4 - " если нужно проигнорировать событие, вызовите явно ignore()", т.е. вроде как по умолчанию оно принимается. (8a533b073cfbe1060ea28f9f898cda1ff176ff4f)
       
  • Рисующийся график в Qt5 почему-то имеет толстые (по высоте) участки, в отличие от Qt4 - пока разбираюсь в причинах
    • Выглядит так: Qt4 , Qt5

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

П.С.
Если эта софтина кому-нибудь интересна, то исходники тут
Записан

Юра.
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #9 : Декабрь 29, 2016, 16:32 »

1) Исходники теперь только в utf-8. Ну в прочем если вы кирилицу не используете, то проблем нет. Если используете, то iconv вам в руки.
Как раз utf-8 и должен устранить проблемы с кирилицей. На то оно утф. Это у некоторых разрабов в голове проблемы.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #10 : Декабрь 29, 2016, 17:29 »

то наверняка послание для любителей 1251
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Bepec
Гость
« Ответ #11 : Декабрь 29, 2016, 21:59 »

Это недоделка разрабов креатора... С их "непереносимостью" кириллицы в дебаге.
Записан
mitrich
Гость
« Ответ #12 : Январь 09, 2017, 16:33 »

Добавлена условная компиляция в строках типа foo->setStyle(new QWindowsStyle());, т.к. такого стиля в Qt5 нет
Сам стиль есть, вот только все классы-наследники QStyle (кроме QCommonStyle и QProxyStyle) теперь приватные и использовать их можно только через QStyleFactory и QProxyStyle.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #13 : Январь 10, 2017, 06:08 »

mitrich, спасибо за наводку, будет время гляну.
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.054 секунд. Запросов: 23.