23 січня Qt Company анонсувала випуск Qt 5.8, з низкою нововведень, які мають досить глобальний характер. Давайте ознайомимося з ними.
Qt Lite
Однією з головних тематик Qt 5.8 стало зробити так, щоб Qt був більш гнучким та легким до адаптації до цілей користувачів, зокрема для розробників систем, що вбудовуються. Qt Lite є кодовим ім'ям проекту, метою якого є впровадження цих цілей.
Метою розробників Qt Company стало зробити Qt простіше у налаштуванні під потреби розробників з уникненням використання функціоналу, який не потрібний у проекті. Це приносить значну економію в розмірі скомпілованих бібліотек Qt і програми, що розробляється.
Система, що впроваджується, є довгою подорожжю, де була переписана значна частина системи, яка відповідає за конфігурування Qt. Ця нова система очищена від того, що наросло протягом останніх 15 років, і це також може призвести до невідповідностей з тим, як Qt був налаштований на різних платформах.
Як результат, отримано одну уніфіковану систему для налаштування різних частин Qt. На додаток користувачам дається гнучкіша в налаштуванні бібліотека Qt. І також покликана полегшити тягар розробників Qt Company у підтримці всіх різних способів налаштування та використання Qt.
Використання нової системи дозволить створити складання Qt, яке підходить для конкретного випадку. Можна буде відмовитися від того функціонала, який не потрібно, що дозволить зберегти ПЗУ та ОЗУ при розгортанні програми на пристрої, що вбудовується. Щоб показати ідею про можливості збереження ресурсів, наведено нижче зображення, яке показує запити Qt стека при запуску невеликої програми на QML:
Як ви можете бачити, нова система налаштування дозволяє значно зменшити розмір та зберегти більш ніж 60% у розмірі бінарника порівняно з Qt 5.6.
Qt Wayland Compositor
API Qt Wayland Compositor , яке було включено як технологія на попередньому ревью в Qt 5.7, тепер повністю підтримується в Qt 5.8. Модуль дозволяє легко створювати власний Wayland Compositor.
Qt Wayland Compositor дозволяє легко впроваджувати ваш власний домашній екран (home screen) та менеджер додатків. Це дозволяє створення потужних і гнучких вбудовуваних систем, де Ви маєте кілька додатків, які мають свої власні інтерфейси користувача. Qt Wayland Compositor підтримує обробку кілька екранів легкими та прозорими способами. Це можливо як з QML, так і з C++ API.
Для більш детальної інформації дивіться API documentation та and приклади .
Зв'язок і Мережа
Qt Serialbus зараз впроваджена повністю в Qt 5.8. Це дозволяє використовувати Qt API для зв'язку та протоколів за послідовними інтерфейсами. У той час як існує безліч різних API, ця версія включає CAN і Modbus.
Qt Network та Web Sockets повністю підтримують TLS PSK. Qt Network зараз підтримує параметри Diffie-Hellman і HTTP/2 в QNetworkAccessManager .
Qt Bluetooth підтримує периферійні пристрої BTLE під macOS та iOS, а також підтримує центральні пристрої BTLE у WinRT.
У Qt 5.8 також доданий новий модуль Qt Network Authorization як попередня технологія на попередньому рев'ю, і в даний момент підтримує OAuth 1 і 2 схеми аутентифікації.
Qt QML і Quick
Досить багато речей сталося в Qt QML та Qt Quick. Двигун QML отримав підтримку кешування бінарних даних QML і JS на диску, що знижує швидкість запуску та споживання пам'яті двигуном. Тільки комерційна версія компілятора Qt Quick поки що підтримується Qt 5.8, але планується вливання цих змін у майбутньому для поліпшення продуктивності та більш інтегрованих рішень.
Qt Quick scene graph зазнала значних змін, що дозволяє зменшити залежність від OpenGL. Це дозволяє додати експериментальну підтримку бекенда Direct3D 12 для Qt Quick, а включити створення інших бекендів, що базуються, наприклад, на Vulkan Graphics API.
На додаток, зараз графічна сцена підтримує часткове оновлення екрана, якщо мала частина була змінена. Це дає трохи більшу продуктивність для Qt Quick 2D малювання.
Також ці зміни в графічній сцені представлені як можливість перенести функціонал малювання Qt Quick 2D безпосередньо в Qt Quick. Це означає, що відмальовувача Qt Quick 2D більше не існує, як окремого модуля Qt 5.8.
Великі зміни були зроблені також під капотом обробки подій від миші та сенсорних подій, поєднуючи їх у новому класі QQuickPointerEvent. Це закладає основу для майбутнього поліпшення обробки подій миші та сенсора, але не впливає на код, що використовує Qt Quick.
Qt Quick Controls 2 також отримали кілька нових типів, таких як діалогові вікна, округлі кнопки та роздільники інструментів. Стилі Material та Universal деякі нові ефекти та підтримку системної теми.
Qt Webengine
Як завжди версія Chromium, використовується Qt Webengine була оновлена до версії 53. Однією важливою рисою є додавання підтримки друку Web сторінок. Також було додано багато невеликих функціональних змін, серед них новий QML API для визначення діалогів, спливаючих підказок і контекстних меню, і підтримка перегляду вихідного коду сторінка.
Qt SCXML
Qt SCXML повністю підтримує Qt 5.8. Модуль робить тривіальну інтеграцію SCXML засновану на машині станів Qt. Це спирається безпосередньо на Qt Statemachine Framework і розширює його як з SCXML так і з C++ компілятором і запуском в рантаймі, який дозволяє завантаження SCXML заснований на машині станів.
Разом з модулем Qt SCXML Qt Creator 4.2 отримав підтримку редагування графіків станів.
Нові технології у попередньому розгляді
Також Qt 5.8 має новий функціонал, який був обраний як технології на попередньому розгляді.
Qt зараз компілюється як Apple TV, так watchOS. У той же час значна частина функціоналу, що підтримується на iOS, також повинна працювати і на tvOS, watchOS підтримка обмежена не графічним функціоналом Qt.
Qt Speech доданий як новий модуль для підтримки перетворення тексту на мову.
Інші покращення
Після первинного випуску Qt 3D з Qt 5.7, сили були сфокусовані на доробці модуля. Було зроблено велику кількість виправлень та покращення продуктивності для цього модуля.
Qt Charts отримали графіки типу Candlestick (Японська свічка), а також зроблено API QOpenGLTextureBlitter API у публічному Qt Gui.
Вбудовувані платформи підтримали Qt для створення пристроїв із кращою підтримкою багатоекранної системи з використанням eglfs QPA плагіна та підтримкою екранів з розгорткою на 90/180 градусів.
Нарешті, багато змін відбулися базовому коді поліпшення використання функціоналу, запропонованого C++11.
Источник Qt Blog