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 ()
Последнее исправление: Sunderland93 (всего исправлений: 3)

Ответ на: комментарий от Deleted

Зачем ты врёшь?

https://github.com/notepadqq/notepadqq#build-it-yourself

+-----------------------+-------------------+
| Build dependencies    | Dependencies      |
|-----------------------|-------------------|
| Qt 5.6 or higher      | Qt 5.6 or higher  |
| qtwebengine5-dev      | qtwebengine5      |   <====== 
| libqt5websockets5-dev | libqt5websockets5 |
| libqt5svg5-dev        | libqt5svg5        |
| qttools5-dev-tools    | coreutils         |
+-----------------------+-------------------+


$ sudo apt-get install qt5-default qttools5-dev-tools qtwebengine5-dev libqt5websockets5-dev libqt5svg5 libqt5svg5-dev
                                                      ^^^^^^^^^^^^^^^^

$ sudo yum install -y qt5-qtbase-devel qt5-qttools-devel qt5-qtwebengine-devel qt5-qtwebsockets-devel qt5-qtsvg-devel
                                                         ^^^^^^^^^^^^^^^^^^^^^
EXL ★★★★★
()
Ответ на: комментарий от saahriktu

Потанцевал опять не раскрылся.

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

Да, я как раз все твои основные патчи упоминал, в том числе и исправление сегфолта.

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

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

смотри

 ~ $ qlist -I qtweb
dev-qt/qtwebkit
~ $ emerge -avtp notepadqq 

These are the packages that would be merged, in reverse order:

Calculating dependencies... done!
[ebuild  N     ] app-editors/notepadqq-1.4.8::gentoo  4,316 KiB

Total: 1 package (1 new), Size of downloads: 4,316 KiB
 ~ $ sudo emerge -1 --buildpkgonly -q notepadqq
Password: 
[ebuild  N    ] app-editors/notepadqq-1.4.8 

Would you like to merge these packages? [Yes/No] 
>>> Verifying ebuild manifests
>>> Emerging (1 of 1) app-editors/notepadqq-1.4.8::gentoo
>>> Jobs: 1 of 1 complete                           Load avg: 1.94, 0.62, 0.33
qtwebengine нужен для версии из гита, для крайнего релиза нужен qtwebkit
QT       += core gui svg widgets webkitwidgets printsupport network

Deleted
()
Последнее исправление: Lifun (всего исправлений: 2)
Ответ на: комментарий от grem

Buggins всерьёз занялся языком программирования D (разработал GUI-тулкит и IDE для него) и в планах у него было переписать Cool Reader на него: Вышел компилятор языка D LDC 1.0 (комментарий)

На ЛОР он изредка заходит, может отпишется по этому поводу. Интересно было бы узнать отложил ли он эту идею в «дальний ящик» или вообще отменил.

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

qtwebengine нужен для версии из гита, для крайнего релиза нужен qtwebkit

Мой пойнт был в том, что этот редактор использовал и использует компонент Web-браузера. А как он называется в прошедшем и настоящем времени: QtWebKit или QtWebEngine, абсолютно не важно.

В данное время они перешли на QtWebEngine, поскольку QtWebKit задепрекейчен уже довольно давно.

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

этот редактор использовал и использует компонент Web-браузера

такое есть и это жесть какая-то

этот редактор использовал и использует компонент Web-браузера

не совсем так. annulen его поддерживает

Deleted
()

Угадай автора по словосочетанию «состоялся релиз».

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

Это потому, что в качестве движка вместо QScintilla они, похоже, всё-таки несколько лет назад решили использовать CodeMirror, который написан на javascript, поэтому и запускается с использованием QtWebEngine. Из-за этого, насколько я понял, в итоге произошёл облом после голосования о том, какие языки использовать для написания расширений: всем сказали спасибо и объявили, что расширения будут только на jacascript. Только я ни одного расширения пока для notepadqq так и не нашёл. Compare и autoindent были бы в нём полезны. Но сам notepaqq при этом запускается не быстрее kate.

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

В готовящуюся версию 1.4 они поддержку рендеринга формул запихнули (мало ли в комментариях потребуется).

grem ★★★★★
()

Закопайте это тормозное глючное ненужно и верните нам теплое ламповое qt4 qt3

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

Браузерные движки для браузеров нужно писать самому с нуля. А не так, что везде один chromium из библиотеки. А весь этот софт, которому нужен qtwebengine, надо писать как веб-приложения. И чтобы юзер выбирал в каком браузере он его запустит.

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

Оно всё модульное, многое можно просто отключить одной строкой и не возить с собой.

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

Показано 4 сообщений из 50. Показать все.

Вот это срач.

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

и правда, что-то они зачастили правки вносить :) и в блоге новости как таковой о новой версии нет, только о фиче, которая появилась в нём

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

Браузерные движки для браузеров нужно писать самому с нуля.

И будет куча несовместимых между собой реализаций движков, которые будут рендерить разные вещи по-разному. Спасибо, но лучше один chromium из библиотеки, который работает везде одинаково.

А весь этот софт, которому нужен qtwebengine, надо писать как веб-приложения. И чтобы юзер выбирал в каком браузере он его запустит.

QtWebEngine в основном используется как каркас для настольных приложений. Вот ещё пример, использующий этот компонент:

https://github.com/qutebrowser/qutebrowser

Как ты представляешь реализацию этой программы в виде Web-приложения? Или того же Anki?

QtWebkit и QtWebEngine для подобного и сделаны. А ещё на них очень удобно писать различные клиенты, которым необходимо взаимодействовать с веб-ресурсами.

Кучу всего интересного можно замутить. Даже такие извращения:
http://esxi.z-lab.me:666/~exl_lab/screens/qt_wolf3d_funny.png
http://esxi.z-lab.me:666/~exl_lab/screens/qt_wolf3d_funny2.png

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

Вы перечисляете почти одни только браузеры. Но, при таком подходе везде, по сути, один только Chromium. Который и так уже есть отдельной софтиной.

И будет куча несовместимых между собой реализаций движков, которые будут рендерить разные вещи по-разному. Спасибо, но лучше один chromium из библиотеки, который работает везде одинаково.

Так в том и суть, чтобы разработать движок, который будет не хуже, а даже лучше. Именно это, по-хорошему, и есть задача разработчиков браузеров если они хотят составить конкуренцию уже существующим браузерным движкам.

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

Вот этим мне популярные бинарные дистрибутивы и не нравятся. Понакрошат каждую библиотеку на сотни мелких пакетиков, и собирай их потом...

Вот это же совсем другое дело:

$ ls /var/log/packages/* | grep \/qt5-
/var/log/packages/qt5-5.11.0-x86_64-1_SBo
$

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

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

Gentoo Linux, все собирается из исходников. Ежедневный

sudo emerge --sync
sudo emerge --ask --update --newuse --deep @world
sudo emerge --depclean
KDE, chromium и LibreOffice установлены. Двухядерный (четырехпоточный) i3-7100 с 16Г памяти. Полет нормальный.

Или ты просто поболтать хотел на популярную тему? Тогда извини.

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

Браузерные движки для браузеров нужно писать самому с нуля.

И компилировать их написанным самим компилятором. С языка, который сам и придумал. Какой-нибудь igogo с очередным наркомански-упоротым синтаксисом. Стоп! Так ведь сейчас все так и делают...

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

В том-то и суть, что строится все необходимая для программы обвязка вокруг браузера с тесным взаимодействием с самим фреймворком Qt. Одному нужно сделать качественную навигацию в стиле редактора VIM, другому необходимо отобразить тяжёлую Offline-документацию, третьему — кнопку «Сделать всё хорошо», по нажатию на которую будут производиться определённые полезные действия на web-странице, четвёртому — заюзать QtWebEngine на каком-нибудь Embedded устройстве в Kiosk-режиме и т.д.

Чтобы сделать это всё тупо с помощью Chromium, нужно хорошо разбираться в его кодовой базе, а в QtWebEngine необходимые API уже прокинуты и готовы к использованию.

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

Чтобы открыть ссылку (в т.ч. и локальную) во внешнем браузере в его кодовой базе разбираться не нужно. А разница между стандартным браузером и QtWebEngine здесь только в том, что у стандартного браузера своё собственное окно, а QtWebEngine можно встроить куда угодно. Кому-то последнее может казаться более удобным, но, чтобы всё работало, что-то встраивать совсем не обязательно.

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

Понакрошат каждую библиотеку на сотни мелких пакетиков, и собирай их потом...

А потребуется тебе простейшее приложение на Qt с примитивным интерфейсом и тяни этот твой собранный QtWebEngine на сотни метров для такой ерунды.

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

и тяни этот твой собранный QtWebEngine на сотни метров

У юзера диалап? Либо юзера не напрягает установка из интернета пакетов на десятки гигов, либо у него уже есть локальное зеркало всего репозитория, откуда он и доустанавливает пакеты. И, да, жёсткие диски у юзеров уже давно не на 2-3 гига. Так что, экономить на разделении библиотек на сотни мелких пакетиков уже давно нет никакого смысла.

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

Да причём здесь твои ссылки, которые ты мусолишь уже вторую страницу? Те, кому нужно открывать ссылки из Web-браузера, который установлен на компьютер пользователя, берут и открывают их с помощью:

QDesktopServices::openUrl(QUrl("https://www.linux.org.ru/news/opensource/14231077"));

Этот функционал заложен в базовый QtGui и никаких вебдвижков здесь не требуется.

Ты вообще не понимаешь суть QtWebEngine. Она в обвязке и в богатом API, позволяющим проворачивать такие вещи, которые нельзя провернуть из твоего любимого системного браузера:
http://doc.qt.io/qt-5/qtwebengine-webenginewidgets-contentmanipulation-exampl...
http://doc.qt.io/qt-5/qwebenginepage.html

Если ты даже не понимаешь, что ты компилируешь, то зачем ты вообще это делаешь?

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

Полет нормальный.

А у меня на AMD Ryzen 7 1700 полёт этой ninja посреди сборки ни разу не нормальный. Если остальной сборочный процесс можно ограничить через «make -j» (при том, что всё остальное собирается и в 16 потоков), то ninja врубает именно все максимальные 16 потоков, причём таким образом, что система фризится, а индикатор жёсткого диска начинает гореть без перерыва. Приходится жать Reset.

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

Почему это нельзя? Можно отправлять запросы внешнему браузеру и получать от него результат. Именно для этого, кстати, в браузеры и добавляют опцию "--headless".

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

Когда ты хочешь поставить Leafpad у тебя устанавливается WebKitGtk? Если нет, то обязательно добавь в свои слакбилды Gtk'шных приложений его установку. Ведь он так же как и QtWebEngine может когда-нибудь пригодиться. И Mono добавить не забудь. Мало ли, вдруг GtkSharp когда-нибудь нужен будет.

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

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

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

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

Ну так это нормальное решение. Нужен браузер - тащи Engine, не нужен - отключай.

Другое дело, что они могли просто оставить компактный QtWebkit, может, EXL знает, почему они так не сделали...

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

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

Тс-с, не пали контору, очень правильно было написано.

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

и добавляют опцию "--headless".

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

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

И Qt по-хорошему должен был быть отдельными библиотеками.

Ты не поверишь.

Но, его разработчики зачем-то всё это слепили в одну библиотеку.

Нет, это ты скачал один специально слепленный архив со всеми исходниками и начал отключать там компоненты, вместо того чтобы просто скачать qtbase и успокоиться.

EXL ★★★★★
()

Ну как там, QNetworkAccessManager научился работать с HTTPS ?

http://www.cyberforum.ru/qt/thread1850684.html

А то у меня на Debian 9 Stable 64 bit и Qt 5.10.1 до сих пор:

13:03:19 [WRN] QSslSocket: cannot call unresolved function SSLv23_client_method
13:03:19 [WRN] QSslSocket: cannot call unresolved function SSL_CTX_new
13:03:19 [WRN] QSslSocket: cannot call unresolved function SSL_library_init
13:03:19 [WRN] QSslSocket: cannot call unresolved function ERR_get_error
13:03:19 [WRN] QSslSocket: cannot call unresolved function ERR_get_error

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

Ну так это же как с texlive. Его тоже разбивают на кучу мелких пакетиков, но разрабатывается оно как единое целое и распространяется в нескольких тарболах.

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

qt слишком толстый

Без qtwebengine всё остальное по дефолту весит 206 Мб на x86_64.

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

Ну как там, QNetworkAccessManager научился работать с HTTPS ?

OpenSSL исключён из поставки Qt из-за того, что запрещён в некоторых странах. По идее должно автоматом твою либу из дистра цеплять.

Проверь чем-нибудь подобным: https://github.com/EXLMOTODEV/Android-Qt-OpenSSL-Test

И кстати эти Warning'и это не ошибки. У меня и с ними HTTPS отлично работает.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.