LINUX.ORG.RU

Релиз Qt 5.11

 ,


1

3

Состоялся релиз кроссплатформенного фреймворка для разработки приложений и построения графических интерфейсов Qt 5.11.

Список изменений:

  • Qt Core:
    • QFloat16 теперь имеет два метода для массового преобразования между float16 и float, используя аппаратное ускорение SIMD, если оно доступно во время выполнения;
    • QVarLengthArray теперь имеет референсные версии rvalue prepend и insert и может содержать типы данных только для подвижных объектов, такие как std::unique_ptr;
    • Методы QVector prepend и insert теперь имеют варианты принимающие ссылки на rvalue;
    • QUuid toString() и toByteArray() теперь могут принимать параметр, определяющий сгенерированный формат;
    • Обновлена поддержка Unicode в QString, QChar и QTextBoundaryFinder для совместимости с Unicode 10;
    • Добавлен QAbstractItemModel::checkIndex(), для помощи в тестировании достоверности индексов модели по конкретным классам моделей.
  • Qt Network:
    • TLS-ресширение ALPN и согласование соединения HTTP/2 теперь поддерживается в iOS (начиная с версии 11);
    • QNetworkRequest теперь имеет атрибут Http2DirectAttribute, чтобы начать соединение в HTTP/2 без предварительного согласования.
  • Qt QML:
    • Переписаны стадии разбора кода и компиляции. Теперь байт-код генерируется непосредственно из AST, и сохраняется как промежуточное представление;
    • Оптимизированная обработка вызовов JS, что приводит к большим улучшениям, особенно при вызове небольших функций;
    • Новый интерпретатор байт-кода с значительно улучшенной производительностью (на 80-90% JIT в сравнении с Qt 5.10);
    • Файлы .qmlc теперь полностью независимы от платформы и сохраняют байт-код вместо сборки;
    • Новая точка доступа JIT, которая генерирует оптимизированную сборку для многократно выполняемого байт-кода;
    • CONFIG + = qmlcompiler теперь также работает в opensource-верии, встраивая сгенерированный байт-код во время компиляции.
  • Qt Quick:
    • Расширенная поддержка загрузки сжатых текстур в элемент изображения. Поддерживаются форматы файлов .ktx и .pkm.
  • Qt Quick Controls 2:
    • AbstractButton:
      • Добавлены свойства autoRepeatDelay и autoRepeatInterval;
      • Перенесено свойство autoRepeat из Button в AbstractButton;
      • Добавлены свойства pressX и pressY для отображения точки нажатия на QML.
    • ButtonGroup:
      • Добавлено свойство checkState для показа общего состояния проверки всей группы.
    • CheckBox и CheckDelegate:
      • Свойство tristate больше не устанавливается в true при установке checkState на Qt.PartiallyChecked;
      • Частично отмеченный чекбокс больше не обрабатывается как полностью отмеченный. Это фиксирует цикличность проверки состояния для чекбокса без трех состояний, чтобы он прошел от частично проверенного до полностью контролируемого состояния;
      • Реализована возможность добавления nextCheckState () в QML.
    • ScrollBar и ScrollIndicator:
      • Добавлены свойства minimumSize, visualSize и visualPosition.
    • SpinBox:
      • Добавлено свойство displayText, чтобы позволить стилям создавать легкую привязку для отображения текстового значения вместо вызова JavaScript-функции textFromValue().
  • Qt 3D:
    • Улучшена производительность и снижено потребление CPU;
    • Выпуск произвольных лучей в пространстве мира или пространстве экрана;
    • Улучшена поддержка SIMD.
  • Qt Location:
    • Экспериментальный API-интерфейс пошаговой навигации;
    • Экспериментальная поддержка объектов QQuickItem-less;
    • API маршрутизации и мест теперь расширяемый и способный возвращать сервис-специфичную информацию;
    • Новый элемент Waypoint для указания дополнительной информации о маршрутной точке в маршрутных запросах, таких как угол захода на посадку;
    • MapItemView теперь QQmlDelegateModel-based;
    • Значительно улучшена производительность MapPolyline;
    • Слои теперь корректно работают в сочетании с элементами карты, что обеспечивает возможность сглаживания и прозрачности без артефактов;
    • Поддержка геокодирования и мест добавлена в плагин Mapbox.
  • Qt WebEngine:
    • Движок обновлён до Chromium 65;
    • Встроенные средства разработчика теперь могут использоваться без отдельного браузера;
    • Добавлен встроенный cookie-фильтр;
    • Добавлена поддержка квот.
  • qdoc:
    • qdoc теперь использует libclang для синтаксического анализа кода C/C ++.
  • Qt Designer:
    • Добавлена поддержка переводов, основанных на ID.
  • Qt GUI:
    • Поддержка печати в Linux теперь поддерживает больше опций CUPS, значительно улучшен диалог вывода на печать;
    • Улучшены средства для людей с ограниченными возможностями на платформе Windows Desktop;
    • В платформу Windows Desktop добавлена поддержка тем виджетов, а также улучшена работа HiDPI;
    • Обновлен двунаправленный текстовый алгоритм Unicode, совместимый с Unicode 10.
  • Qt Widgets:
    • Добавлен быстрый выбор текста мышью для QLineEdit.
  • Qt Serial Bus:
    • Добавлен J2534 Pass-Thru CAN-плагин для связи между компьютером и автомобилем;
    • Добавлено описание, серийный номер и канал в QCanBusDeviceInfo, для совместимых плагинов;
    • Введено категоризированное ведение журнала в модуль шины CAN, который может быть включен фильтрами «qt.canbus» и «qt.canbus.plugins. <Pluginame>»;
    • QCanBusFrame::isValid() теперь проверяет недопустимую длину полезной нагрузки CAN FD. Например. 24 является допустимой длиной полезной нагрузки CAN FD, но 28 нет.
  • Qt Bluetooth:
    • В BlueZ's DBus LE API портирована реализация Bluetooth Low Energy (минимальная версия для включения - BlueZ 5.42).
  • Qt Test:
    • Добавлен QAbstractItemModel Tester, для помощи в тестировании классов моделей.

>>> Подробности и полный список изменений

★★★★★

Проверено: maxcom ()

QVector теперь имеет референсные версии rvalue для prepend и insert;

Джва года ждал! Правда перевод какой-то надмоговой. Я б сказал так:

методы QVector prepend и insert теперь имеют варианты принимающие ссылки на rvalue.

KennyMinigun ★★★★★ ()

средства для людей с ограниченными возможностями на платформе Windows Desktop

Пользователи окошек - люди с ограниченными возможностями.

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

Может ли программист на Qt написать симфонию, создать шедевр? Это же просто имитация программирования, тулкитофилилия.

Симфонии пишутся для симфонических оркестров. Трудно передать красоту симфонии, исполняя ее на губной гармошке.

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

Тулкит как тулкит. Но, вот, chromium в qtwebengine зря запихали, да. Год назад на i7-2600K оно ещё со скрипом собиралось, а сегодня оно собирается через ninja. И этот процесс сборки вешает даже AMD Ryzen 7 1700.

Пришлось отключить сборку этого qtwebengine.

saahriktu ★★★★★ ()
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от Exmor_RS

Может ли программист на Qt написать симфонию, создать шедевр?

Qt сильно снижает входной порог в C++, поэтому можно сказать, что пророчество mv потихоньку сбывается:

www.linux.org.ru/forum/development/4586906

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

Не умеешь - не берись. Перевод очень корявый.

Просто ТС не является программистом. А программисты новости не переводят. Много у нас новостей по Qt было раньше? Где 5.10 или 5.10.1?

Лучше такие новости, чем информационная пустота. Иди в корректоры, если есть предложения по исправлению новостей.

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

Но, вот, chromium в qtwebengine зря запихали, да. Год назад на i7-2600K оно ещё со скрипом собиралось, а сегодня оно собирается через ninja. И этот процесс сборки вешает даже AMD Ryzen 7 1700.

Что значит зря? Зря запихали потому что у товарища saahriktu qtwebengine долго собирается? Почему бы тебе не арендовать мощный билд сервер и не собирать свои слакобилды там? 2018 год на дворе.

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

Зачем в тулките целый браузер? Тулкит - это тулкит. Его задача рисовать окошки и элементы управления. Не более. В этом контексте разного рода Qt 3D ещё понятны. Но, не целый браузер.

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

И когда это Qt у тебя стал графическим тулкитом? Вообще-то Qt это фреймворк, объединяющий кучу всего, от геолокации и сети, до как раз рисования окошечек.

Графический тулкит это Qt Widgets + Qt Gui. Туда уже встроили браузер? Нет. Так что ты возмущаешься? Почему на Qt Network не возмущается? А на Qt SQL? А на Qt XML?

У тебя в голове смешались кони и люди.

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

Ну как снижает, после дельфей малость глаза на лоб лезут от этих «слотов» и «сигналов».

P.S. Я подумываю у автора coolreader попросить зафиксировать версию тэгом. Ты в ближайшее время пул реквест не планировал делать? Хочется в gentoo обновить ebuild для более свежей версии, а то пачку патчи таскать приходится с самого момента добавления в дерево :)

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

Ты в ближайшее время пул реквест не планировал делать? Хочется в gentoo обновить ebuild для более свежей версии

Нет, не планирую. Да и те Pull Request'ы что я делал были только с исправлениями сегфолтов, ошибок сборки и некоторых багов, которые я обнаружил когда меня попросили реализовать в Cool Reader простенькую функциональность (:

P.S. Я подумываю у автора coolreader попросить зафиксировать версию тэгом.

Обязательно попроси, потому что совсем недавно автор теггировал репозиторий: https://github.com/buggins/coolreader/releases

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

Qt is a cross-platform application framework and widget toolkit

И большинству людей Qt нужен именно как тулкит. И логичнее, разумеется, было бы разделить. Но, пока что никто не разделил, а смешали именно авторы.

Так что ты возмущаешься?

Я не возмущаюсь. Я просто говорю, что зря включили целый chromium. Даже во фреймфорке он не так уж и нужен. Ссылки можно открывать во внешнем браузере пользователя.

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

Просто ТС не является программистом.

Просто ТС пытается успеть срубить как можно больше биткоинов путём штамповки новостей, из-за этого страдают теперь всё: и авторы которые пишут реже, но качественнее, и ЛОРовцы которым пихают сырые новости на главную с реактивной скоростью.

Уже говорил и не раз: Sunderland93 в погоне за битками превращает главную ЛОРа в бегущую строку...

Как говорил mv

Я против снижения интеллектуальной планки на этом форуме.

>>> www.linux.org.ru/forum/development/4586906?cid=4587024

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

ЛОРовцы которым пихают сырые новости на главную с реактивной скоростью.

Вот модераторам это и говори. Я стараюсь писать обо всём, что интересно. А не просто абы как, несмотря на то что ты так думаешь. Так что завязывай бомбить.

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

Да и те Pull Request'ы что я делал были только с исправлениями сегфолтов, ошибок сборки и некоторых багов

Видел, тоже добавил всякой мелочи.

Обязательно попроси, потому что совсем недавно автор теггировал репозиторий

Да, только это, похоже, больше для андроида и там отсутствуют важные патчи для сборки с Qt5 и патч исправляющий сегфолт после сборки с gcc-7.3.0. Зато уже есть патчи (в том числе твой же) для исправления косяка с отступами на странице. За них большое спасибо. В gentoo с сентября используется патч для сборки с Qt5, но немного отличающийся, не в лучшую сторону (твой я чуть подправил: заменил deprecated макрос на новый).

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

И большинству людей Qt нужен именно как тулкит.

И эти люди используют свои QtCore+QtWidgets+QtGui и не жужжат по поводу QtWebEngine. А когда он им понадобится — он будет у них под рукой.

И логичнее, разумеется, было бы разделить.

Так он и разделён:

https://download.qt.io/official_releases/qt/5.11/5.11.0/submodules/

Качай qtbase + только необходимые модули и собирай. Но ты скачал вообще ВСЕ ИСХОДНИКИ (single) и жалуешься что там ничего не разделено и долго собирается.

Я просто говорю, что зря включили целый chromium. Даже во фреймфорке он не так уж и нужен. Ссылки можно открывать во внешнем браузере пользователя.

Да это же типичное «мне не нужен == никому не нужен». У этого QtWebEngine огромная куча применений. Начиная от базы для Web-браузеров на Qt: Otter, QupZilla, Falkon, а также для встраивания мощной системы документации в свою программу (как в IDA Pro) и заканчивая Embedded'ом, где благодаря QtWebEngine делают всякие Kiosk-окружения.

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

и авторы которые пишут реже, но качественнее

реже

Значит по твоему это нормально, когда новость запаздывает на пару недель, и к моменту подтверждения уже теряет былую актуальность? И ладно когда модераторы слоупочат и тянут резину, но ещё и сидеть ждать пока кто-нибудь соблаговолит написать новость о выходе нового ядра, или KDE. Надо делать всё по-человечески - есть ошибки или неточности в новости, укажи на них. Раз уж ты корректор, который не осиливает сам поправить. И я с радостью поправлю и дополню, если надо. А раз никто мне этого не говорит, и молча подтверждает новости - значит всё нормально. Я из этого исхожу.

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

и патч исправляющий сегфолт после сборки с gcc-7.3.0

Вроде как я его коммитил, в т.ч. и фикс ошибки сборки на новых GCC. У меня как раз GCC 7.3.x тогда был. Если это тот сегфолт, который рушит Cool Reader сразу после запуска (окно на мгновенье появляется), то это оно и пофикшено.

Вообще код надо бы прогнать каким-нибудь статитическим анализатором, он очень старый и там куча this != null. Ну или хотя бы посидеть поисправлять предупреждения GCC :)

патч для сборки с Qt5

Да, ужасы CMake. Точнее Qt+CMake, там нужно чтобы -fpie и -fpic проставлялись так, как с ними собран Qt в дистре. Это гарантируется модулями CMake, которые идут в поставке с Qt, а посему просто захардокиживание этих флажков (наверно так было там сделано) не катит. Насчёт deprecated, это да, надо было покурить доки и заюзать именно то, что сейчас актуально.

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

Даже в полном наборе исходников далеко не всё собирается по дефолту. Но, qtwebengine по дефолту собирается.

и жалуешься ... долго собирается

Я не жалуюсь, и тем более не на то, что долго собирается. Я просто отключил сборку qtwebengine через

  -skip qtwebengine \

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

Даже в полном наборе исходников далеко не всё собирается по дефолту. Но, qtwebengine по дефолту собирается.

О, вспомнил ещё одну софтину, которой нужен QtWebEngine:

Notepadqq: https://github.com/notepadqq/notepadqq/blob/master/src/ui/ui.pro#L7

EXL ★★★★★ ()