Qt 5: изменения в C++ API и модулях
СОДЕРЖАНИЕ:
1. Первые впечатления;
2.Изменения в C++ API и модулях (ВЫ ЧИТАЕТЕ ДАННЫЙ РАЗДЕЛ);
3. Сборка.
Вообще сложилось впечатление, что разработчики Qt 5 приложили много усилий, чтобы программисты С++ бросили портирование и писали только на QML: слишком уж много ненужных изменений в C++ API.
Например, функция QInputDialog::getInt() вместо QInputDialog::getInteger(). Каков источник этой принципиальности? А ведь в коде придется менять...
В QHeaderView вместо setMovable(bool movable) теперь надо использовать QHeaderView:: setSectionsMovable, и подобные переименования многочисленны.
Как известно, разработчики Qt разнесли разные части API по модулям. (Раньше тоже было так, но это не объявлялось новшеством.) Однако толку в такой системе мало, поскольку одни модули не работают без других. Разве что WebKit можно со своими программами не «таскать», но и раньше так было.
Что включили в ядро Qt, в модуль Qt Core? Кажется, ядро должно быть минимальным, содержать только важнейшие функции для работы других компонентов библиотеки и пользовательских программ. Но в Qt 5 это переосмыслили: в ядро поместили целый арсенал функций работы с анимацией (даже в игровой библиотеке SDL такого нет), а также JSON, XML... Правильная ли это модульность?
Из прежнего модуля Qt GUI выделили отдельный виджет - QtWidgets. Для графической подсистемы Qt теперь так или иначе нужен OpenGL, причем, по словам разработчиков, лучше OpenGL 2.0 либо Open GL ES 2.0.
Для Windows делается финт: предлагается использовать библиотеку ANGLE, которая переводит вызовы OpenGL в DirectX: чтобы собрать саму ANGLE, вам понадобится DirectX SDK.
К слову о виджетах и стилях оформления: В Qt 5 нам оставили все стили для Windows, но устранили Linux-стили вроде Cleanlooks - взамен появился универсальный для всех платформ Fusion.
Модуль Qt SVG был оставлен в Qt 5 по настойчивым просьбам трудящихся, но разработчики Qt заявили, что развивать его не будут, предложив взять поддержку SVG из WebKit. Модуль Qt XML остался, но стал deprecated - теперь надо пользоваться парсером из ядра.
1. Первые впечатления;
2.
3. Сборка.
Вообще сложилось впечатление, что разработчики Qt 5 приложили много усилий, чтобы программисты С++ бросили портирование и писали только на QML: слишком уж много ненужных изменений в C++ API.
Например, функция QInputDialog::getInt() вместо QInputDialog::getInteger(). Каков источник этой принципиальности? А ведь в коде придется менять...
В QHeaderView вместо setMovable(bool movable) теперь надо использовать QHeaderView:: setSectionsMovable, и подобные переименования многочисленны.
Как известно, разработчики Qt разнесли разные части API по модулям. (Раньше тоже было так, но это не объявлялось новшеством.) Однако толку в такой системе мало, поскольку одни модули не работают без других. Разве что WebKit можно со своими программами не «таскать», но и раньше так было.
Что включили в ядро Qt, в модуль Qt Core? Кажется, ядро должно быть минимальным, содержать только важнейшие функции для работы других компонентов библиотеки и пользовательских программ. Но в Qt 5 это переосмыслили: в ядро поместили целый арсенал функций работы с анимацией (даже в игровой библиотеке SDL такого нет), а также JSON, XML... Правильная ли это модульность?
Из прежнего модуля Qt GUI выделили отдельный виджет - QtWidgets. Для графической подсистемы Qt теперь так или иначе нужен OpenGL, причем, по словам разработчиков, лучше OpenGL 2.0 либо Open GL ES 2.0.
Для Windows делается финт: предлагается использовать библиотеку ANGLE, которая переводит вызовы OpenGL в DirectX: чтобы собрать саму ANGLE, вам понадобится DirectX SDK.
К слову о виджетах и стилях оформления: В Qt 5 нам оставили все стили для Windows, но устранили Linux-стили вроде Cleanlooks - взамен появился универсальный для всех платформ Fusion.
Модуль Qt SVG был оставлен в Qt 5 по настойчивым просьбам трудящихся, но разработчики Qt заявили, что развивать его не будут, предложив взять поддержку SVG из WebKit. Модуль Qt XML остался, но стал deprecated - теперь надо пользоваться парсером из ядра.