LINUX.ORG.RU

Qt 5.15

 , ,


2

3

26 мая вышла новая версия C++ фреймворка Qt 5.15 LTS.

Эта версия - последняя среди версий Qt 5 перед выпуском Qt 6. Функции, намеченные к удалению в Qt 6 обозначены в текущем выпуске как устаревшие. Некоммерческая поддержка будет осуществляться до выхода Qt 6, коммерческая поддержка будет осуществляться в течение трёх лет.

Новинки выпуска:

  • Начат перенос графического стека Qt на Qt Rendering Hardware Interface (RHI), который обеспечивает запуск приложений Qt Quick поверх Direct 3D, Metal (графический API систем Apple), Vulkan и OpenGL. Планируется, что Qt RHI станет центральной частью Qt 6.

  • Добавлена полная поддержка Qt Quick 3D - API для внедрения 3D-содержимого в приложения на основе Qt Quick с возможностью определения 3D-сцен на языке QML. Представленный впервые в Qt 5.14, в текущем выпуске у данного API появилась поддержка эффектов постпроцессинга, новый API для пользовательской геометрии, API поворота фигур на основе кватернионов и поддержка расходящихся лучей.

  • Qt Design Studio 1.5 с поддержкой Qt Quick 3D, переработанным интерфейсом на основе прикрепляющихся виджетов, улучшенным 3D-просмотром, возможностью добавления аннотаций к элементам и новым редактором диаграмм.

  • В Qt QML добавлены «обязательные» (required) свойства для компонентов, чьи значения обязательны к заданию пользователям компонента, встроенное (inline) задание компонентов, декларативный способ задания типов, оператор слияния ?? для задания значения в случае равенства NULL значения слева. Также улучшены предупреждения утилиты qmllint, добавлена утилита qmlformat для проверки соотвествия указаниям к стилю кода QML, QML в составе пакета Qt для микроконтроллеров стал совместим с QML для Qt 5.15.

  • В Qt Quick добавлена поддержка цветовых пространств для элементов Image, добавлен элемент PathText в состав Qt Quick Shapes. У хендлера указателя появилось свойство cursorShape для задания формы курсора мыши, для TableView добавлен объект HeaderView для добавления вертикальных и горизонтальных заголовков таблиц.

  • Улучшена поддержка оформления на стороне клиента (CSD).

  • Qt Lottie, модуль интеграции анимаций Adobe Effects, теперь поддерживается полностью.

  • Qt WebEngine обновлён до Chromium 80.

  • У Qt 3D улучшена поддержка профайлинга и отладки.

  • Qt Multimedia поддерживает рендер на нескольких поверхностях. Процедуры масштабирования и конвертации картинок в Qt GUI теперь во многих случаях многопоточная.

  • Qt Network поддерживает настраиваемые таймауты и тикеты сессий TLS 1.3.

  • QRunnable и QThreadPool могут работать вместе с std::function, добавлен кроссплатформенный метод удаления в корзину QFile::moveToTrash().

  • Добавлена поддержка родного диалога выбора файла в Android.

>>> Блог Qt

Эта версия - последняя среди версий Qt 5 перед выпуском Qt 6.

Во. Скоро KDE 6 — наконец-то пришло время всякое старьё выкидывать.

fornlr ★★★★★ ()

Добавлена поддержка родного диалога выбора файла в Android

В андроиде есть родной диалог выбора файла? Не выбрать фотачку из галереи, а прям по файловой системе лазить?

TheAnonymous ★★★★★ ()

Qt Multimedia поддерживает рендер на нескольких поверхностях

Два года ждал, без шуток! Из-за отсутствия этой фичи пришлось использовать vlc-qt.

unC0Rr ★★★★★ ()
Ответ на: комментарий от TheAnonymous

Нет, насколько я знаю. Если есть приложение в системе, которое может выбирать произвольные файлы, можно его исользовать, возможно это имеется в виду. «Выбрать фотачку из галереи» это в общем-то тоже не встроенная в андроид функциональность, это делается через отдельное приложение.

kostik1 ()

В шестёрке будут наконец внедрять сильную типизацию, или останется везде int на все случаи жизни, даже там где требуется беззнаковый или explicitly-convertible тип?

anonymous ()
Ответ на: комментарий от anonymous

везде int на все случаи жизни, даже там где требуется беззнаковый

Это хорошая холиварная тема. Есть мнение, что по умолчанию нужно использовать именно знаковый int, даже там, где, казалось бы, хватает беззнакового (индексы и т.п.). Аргументы: знаковый тип имеет естественное значение «невалидно»; более естественно записывать обратные циклы; меньше приведений типов. А беззнаковые применять только для битовых полей, адресов… короче, для низкоуровневых вещей.

hbee ★★★ ()

Боюсь, до KDE 6 Линукс на моём компе не дотянет:(

После 12 лет с пингвином пытаюсь обжиться в десяточке, и, по сути, единственное критически важное, что не удаётся настроить - это переключалка клавиатуры KDE, у которой, судя по всему, нет аналога под Винду.

Darktable и KDEnlive портировали, KDEPIM сдох со своим Akonadi (да и всё переехало в веб), Amarok3 устал ждать.

duott ★★★★★ ()
Ответ на: комментарий от hbee

Зачем в высокооуровневом фреймворке низкоуровневые костыли? Почему я могу установить таймеру setInterval(widgetWidth) и наоборот, и компилятор не ругнётся, тк типы одинаковы? В Qt синтаксический сахар перевесил проверки и безопасность.

anonymous ()
Ответ на: комментарий от chkalov

имеет 2^31 естественных невалидных значений?

Ну и что, жалко, что ли? :) Так-то конечно, писать такие библиотеки надо на Rust. И уж во всяком случае не мешать std и Qt в C++ проекте.

Кстати, сам Страуструп признавал: «The original use of unsigned for the STL was a bad mistake and should be corrected».

hbee ★★★ ()
Ответ на: комментарий от anonymous

Тоже беспокоит, там должен быть не больше uint16_t. Но хозяин-барин, если ему надо создать (оффскрин) окно 100500x2, то это его дело, память от этого не уйдёт в OOM. Хотя оставим такой вопрос на 10 лет, если вдруг мониторы будут и правда 100500 K. А сейчас проблема в том, что я не могу создать QVector больше 2Гб на 64-битной платформе, а std::vector могу.

anonymous ()
Ответ на: комментарий от anonymous

не могу создать QVector больше 2Гб на 64-битной платформе

Вектор такого размера сам по себе проблема - фрагментированная память будет сурово мешать. Напрашивается кастомный вектор, хранящий чанки (по идее std::deque).

hbee ★★★ ()
Ответ на: комментарий от hbee

Вектор такого размера сам по себе проблема

но может понадобиться. а мешать придётся. лучше на Qt только междумордие писать, если припёрло. Если это не простая программа с десятком диалогов.

samy_volosaty ★★★★★ ()
Ответ на: комментарий от loz

Прикольно а оно лучше того что в джаве?

Зависит от того, где ты это будешь использовать. Из коробки в Java несколько GUI-фреймворков: AWT (очень древний), базирующийся на нем Swing (тоже древний) и JavaFX, который выкинули из JDK в отдельный проект и который довольно слабо развивается. Есть еще кросс-платформенный SWT используемый в Eclipse, который рисует графику через дефолтные графические тулкиты в разных системах, как это делает тот же wxWidgets:

  • Под Windows использует WinAPI;
  • Под macOS использует Cocoa;
  • Под Linux использует GTK+ последней версии.

Вообще ситуация с GUI в Java не слишком хорошая. Например та же компания JetBrains для своей IDEA сделали огромную надстройку над AWT/Swing, добавив туда кучу контролов и возможностей для кросс-платформенной работы в трех основных OS.

И можно ли с Qt из джавы работать?

Раньше был такой проект, который назывался QtJambi, но в настоящее время он оказался никому не нужным и даже не получил обновления до пятой мажорной версии Qt.

EXL ★★★★★ ()

Добавлена полная поддержка Qt Quick 3D - API для внедрения 3D-содержимого в приложения на основе Qt Quick с возможностью определения 3D-сцен на языке QML.

compiz напрягся?

eR ★★★★★ ()
Ответ на: комментарий от anonymous

Тоже беспокоит, там должен быть не больше uint16_t.

Дисплеи быстро набирают в разрешениях и через десяток лет могут вылезти за 65535. И Qt к этому будет полностью готов, в отличие от, например, X.Org.

В шестёрке будут наконец внедрять сильную типизацию, или останется везде int на все случаи жизни, даже там где требуется беззнаковый или explicitly-convertible тип?

Почитай эту тему, анон: QT -- размеры в int -- что за бред оО? Или я чего то не понимаю? (комментарий)

В Qt до версии 4 были unsigned в контейнерах, от которых отказались и перешли на использование signed-значений.

А сейчас проблема в том, что я не могу создать QVector больше 2Гб на 64-битной платформе, а std::vector могу.

Для контейнеров такого огромного размера требуется использовать что-то особенное. В той же Java, насколько я помню, тоже Integer в размерности местных структур данных, аналогичных QVector’у.

EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от popov-aa

Доколе? Когда уже в джаве появится нормальный развиваемый гуй?

Эксклюзивно для jvm уже никогда, сейчас пишу энтерпрайз, если 10 лет назад энтерпрайз был swing запускаемый через javawebstart, то сейчас это web в броузере.

anonymous ()
Ответ на: комментарий от popov-aa

Доколе? Когда уже в джаве появится нормальный развиваемый гуй?

Это было бы отлично, но скорее всего никогда. Если бы SUN все еще был на плаву, может быть и появился бы. Но не при Oracle.

Ситуация с AWT/Swing довольно плачевная на момент 2020 года. По сути он вскоре выродится в то, во что выродился тот же Xt (X Toolkit Intrinsics)/Xaw (X Athena Widgets) в мире Linux (и Unix), на развитие которого забили и наклепали сначала Motif, а потом и GTK+ с Qt’ом. Вот и в Java мире происходят такие пертурбации, вместо развития AWT/Swing в составе JDK, все начали клепать другие графические тулкиты – SWT, JavaFX, IDEA UI Framework и т. д. В итоге AWT/Swing совсем устарел и покрылся пылью.

EXL ★★★★★ ()