Qt audio engine это что

Qt Android и системный диалог управления звуком

Речь, конечно же, пойдёт не о том, что можно в приложении поймать событие нажатой клавиши и просто задать уровень звука. Дело в том, что можно работать с приложением и на фоне слушать музыку, запущенную на плеере. Или просто один раз исправить файл системны — и оно всегда будет работать. Необходимо, чтобы при нажатии на клавиши регулировки уровня звука на устройстве, менялся системный уровень звука (ну там, выпрыгивал регулятор громкости и т.д.; ну, вы меня поняли).

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

Итак, приступим.

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

Там заходим в папочку 5.Х.Х (Где Х — это номер версии, у меня 5.2.1). Здесь заходим в папку где указано имя собирателя, которым вы пользуетесь для Android (у меня это android_armv7), а далее проходим следующий путь вложенных папок: \src\android\java\src\org\qtproject\qt5\android\bindings\

Вот мы и на месте. В папке открываем на редактирование файл QtActivity.java.
После строки:

Примерно 36-я строка, вставляем следующий код:

Примерно 62-я строка, вставляем следующий код:

Далее, где объявляются разные объекты (я это сделал в 112 строке), необходимо вставить следующий код:

И напоследок, находите в коде функцию onKeyDown и в её начале вставляете код:

Это, по моему, единственный кусок, взятый из статьи на форуме.

В общем итоге функция будет иметь следующий вид:

Ну, вот и все. Теперь пересоберите свои проекты для Android и радуйтесь отображению диалога уровня звука при его регулировке.

На всякий случай привожу ссылку на форум, где это было найдено. Всё работает, проверено.

Источник

[CppCon 2017] Ларс Кнолл: C++ фреймворк Qt: История, Настоящее и Будущее

Содержание цикла обзора выступлений CppCon 2017:

Обзор выступления Ларса Кнолла (Lars Knoll), являющегося техническим директором Qt Company. Не ждите от этого выступления слишком многого. В квадратных скобках курсивом мои примечания.

Спасибо за возможность немного рассказать о Qt. Это C++ фреймворк. Его принципы и философия немного отличаются от тех, которые вам знакомы по стандартной библиотеке. [Вопрос к залу] Просто для информации, многие ли из вас знают Qt и использовали его раньше? Вау! Спасибо, здорово! Это фантастика! Тогда я буду рассказывать о вещах, которые вы вероятно уже знаете.

Что такое Qt?

Возможно, это самый всеобъемлющий C++ фреймворк. Но это не только фреймворк, это также разнообразные инструменты, которые помогают разрабатывать embedded-устройства, UI-технология Qt Quick, не относящаяся к C++, но интегрируемая с ним.

Две лицензии: коммерческая и LGPLv3/GPLv3. Это открытый проект.

Qt for Application Development

Qt audio engine это что. image loader. Qt audio engine это что фото. Qt audio engine это что-image loader. картинка Qt audio engine это что. картинка image loader

В основе находятся неотъемлемые библиотеки. Самая главная — Core, содержащая основные классы, I/O, работу с файлами и т.д. Библиотека GUI — основа графического интерфейса. И много других.

Qt for Device Creation

Qt audio engine это что. 59d28560caba0277056805. Qt audio engine это что фото. Qt audio engine это что-59d28560caba0277056805. картинка Qt audio engine это что. картинка 59d28560caba0277056805

Qt Creator

Кроссплатформенная среда разработки для настольных, мобильных и встраиваемых систем. Многие используют ее для программирования на чистом C++, без Qt. Поддерживает интеграцию различных инструментов (профилировщики, отладчики. ), автокомплит, VCS.

Qt audio engine это что. image loader. Qt audio engine это что фото. Qt audio engine это что-image loader. картинка Qt audio engine это что. картинка image loader
Раннее обнаружение ошибок с помощью Qt Creator и CLang static analyzer

История

Перенесемся на 26 лет назад. Студенты Haarvard Nord и Eirik Chambe-Eng задумались над новым проектом. В то время они занимались разработкой GUI для системы, которая работала на Unix, Macintosh и Windows. Это было трудно. Летом 1990 они решили, что им нужна объектно-ориентированная система отображения.

В 1993 было разработано первое графическое ядро

Qt audio engine это что. 59d285603c71a001678060. Qt audio engine это что фото. Qt audio engine это что-59d285603c71a001678060. картинка Qt audio engine это что. картинка 59d285603c71a001678060

Эта версия называлась Quasar. Тогда не существовало пространств имен. Motif (библиотека элементов интерфейса и набор спецификаций для разработки графических интерфейсов под X Window System) имела свой префикс. Поэтому был добавлен префикс «Q», который исполнял роль пространства имен. Сейчас от той версии сохранилось многое. Остался QObject — центральная часть, реализующая механизм сигналов/слотов. А также QEvent, QFont, QPainter, QColor.

В 1994 они убедили своих жен поддержать их финансово пару лет, и основали компанию Trolltech.

Qt audio engine это что. 59d285603c739566183175. Qt audio engine это что фото. Qt audio engine это что-59d285603c739566183175. картинка Qt audio engine это что. картинка 59d285603c739566183175
Ранняя версия сайта Trolltech

Проект был еще довольно сырой. К тому же продажи ПО через интернет в те времена не пользовались популярностью, предпочитали физические носители. Соответственно денег было мало.

1996: Qt 1.0

Работал полностью без шаблонов. Поэтому было несколько специализированных списков для указателей, целых чисел и пр. Поддерживались Windows 95/NT и UNIX/X11. Версия для UNIX была с открытым кодом, так как маленькой компании нужно было как-то распространить свой продукт.

New Project: Kool Desktop Environment (KDE)

В 1997 Маттиас Эттрих (известный за свой вклад в проект KDE) решил использовать Qt для создания KDE. Вероятно это и стало причиной по которой Qt «взлетел».

Qt audio engine это что. 59d285608887b844198740. Qt audio engine это что фото. Qt audio engine это что-59d285608887b844198740. картинка Qt audio engine это что. картинка 59d285608887b844198740

1999: Qt 2.0

Был выпущен под лицензией GPL. Появилась поддержка юникода. Проекту был предоставлен венчурный капитал. Количество сотрудников за год увеличилась с 5 до 50.

Были разработаны основные виджеты, а также слои, обеспечивающие «гибкий» интерфейс. Но людям не хотелось писать код для этого. Тогда появился Qt Designer.

Qt audio engine это что. 59d28560bd4ca950388230. Qt audio engine это что фото. Qt audio engine это что-59d28560bd4ca950388230. картинка Qt audio engine это что. картинка 59d28560bd4ca950388230
первая версия

В это время я перешел на работу в Trolltech [И поэтому автор стал далее использовать местоимение «мы»]

2001: Qt 3

Мы заменили explicit sharing на implicit sharing для строк. У людей появилась куча проблем со строками. Тогда мы решили оставить implicit sharing, но создавать новый внутренний экземпляр, когда строка меняется (copy-on-write) [далее чуть подробнее].

Стали использовать больше шаблонов, C++98. Появился qobject_cast<> (аналог dynamic_cast для QObject, но не использующий RTTI). Открыты исходники для Mac.

2005: Qt 4

Тщательно пересмотрели шаблонные и вспомогательные классы. Перешли от хранения указателей на значения в контейнерах к хранению самих значений. Implicit sharing контейнеры стали использовать атомарный подсчет ссылок. Открыты исходники для Windows. Для Windows это было сделано в последнюю очередь, потому что нам был нужен доход и покупатели чтобы выжить.

Nokia приобретает Trolltech

Nokia была заинтересована в общем API для их платформ (S40, Symbian & Maemo/MeeGo). Были получены огромные инвестиции в Qt. Мы долгое время хотели разработать кроссплатформенное IDE, но не было средств. Руководство предлагало Eclipse, но она не очень хороша для C++. C Nokia наше желание стало возможным и был создан Qt Creator. А также Qt Quick. Еще мы стали работать над интеграцией движка WebKit. Nokia сменила лицензию с GPL на LGPL, что сделало фреймворк еще более свободным.

В 2012 мы разошлись с Nokia.

2011/2012 Qt 5

Digia приобрела Qt.

Портировать на новые платформы было трудно, поэтому добавили слой абстракции. Хорошо поработали над графическим интерфейсом, он перестал быть статичным. Например, это видно по окошку Dock Widget во время перемещения.

2016: Qt Company отделилась от Digia

Qt Company сегодня

250 сотрудников, годовой доход 32 миллиона евро. Около миллиона активных пользователей.

Qt сейчас

Сохранение простоты

C++ имеет очень крутую кривую обучения, из-за чего новичкам бывает тяжело. Вся эта сложность требуется в редких случаях. А Qt пользуются не только гуру C++. Вы редко увидите разработчика приложений возящегося с шаблонным метапрограммированием.

Реализация

[Поверхностно рассказывается про основы QObject, Сигналы/Слоты, moc, про которые написано в любом руководстве, пропустил]

Implicitly shared

Многие классы реализованы примерно так:

Это позволило нам быть более свободными при добавлении и удалении членов класса. При изменении объекта создается копия внутренних данных. Достоинства такого подхода:

[В первой строке detach действительно вызывается, но создание внутренней копии произойдет только если счетчик будет больше единицы, например:]

Заполнение недостающего в стандартной библиотеке:

Qt Quick

[Самые-самые основы QML, ничего нового. Пропустил]

Будущие релизы

Графика

Включение различных графических API в Qt Scene (OpenGL, Vulkan, Metal, Direct3D, Software Rasterization)

Плановая работа

C++14 & 17

Мы используем C++11 в той мере, в которой позволяет VS2013. Мы бы хотели использовать:

Мог бы стать очень интересным для Qt: концепты, модули, рефлексия (может быть даже удалось бы избавиться от moc когда-нибудь в будущем).

Вопросы и ответы

Что вы скажете о безопасности Qt?

Конечно мы работаем над этим, тратим много времени, выпускаем патчи, апдейты. Наш security mailing list достаточно небольшой.

Как произносится: «кьютИ» или «кьЮт» [очень мягкая «т» в обоих случаях]?

Хороший вопрос! В нашей компании и в тех которые работают с нами используется «кьЮт», хотя в США преимущественно «кьютИ». [А как у вас? Добавил голосовалку]

Программирование на Qt отличается от программирования на C++. Что вы думаете о дублировании функционала — например QVector и многого другого? Планируете объединить или что?

В идеале да, но есть проблемы. Во-первых, из-за поддержки старого кода. Во-вторых, некоторые Qt классы лучше, например QString (интерфейсные методы типа преобразования регистра, юникод). Задают много вопросов про схожие контейнеры. Я советую выбирать наиболее подходящие.

Сейчас в Qt используются сырые владеющие указатели (raw owning pointers). Не пора ли их заменить на умные? Сейчас объект с умным указателем нельзя передать в Qt, потому что у него появится родитель.

Это очень сложно. И сломается весь старый код.

Если вашкод опенсорсный, то откуда доход?

От продаж коммерческой версии.

Почему бы к QObject и производным классам не добавить конструктор перемещения? С конструктором копирования это понятно [почему нет конструктора копирования].

Все сломается. Если бы мы предвидели появление семантику перемещения, то возможно не стали бы использовать текущий механизм. Сейчас его менять нереально.

Вы проводили оценку быстродействия модели copy-on-write для строк по сравнению с простым копированием?

Для коротких строк копирование быстрее. Скоро выйдет обновление, в котором будет реализован подобный механизм для коротких строк.

Как насчет поддержки других графических API?

Если мы говорим о 3D API, типа Apple Metal, Vulkan, Direct 3D 12, то это сложно.

Источник

Новости Qt, июнь 2017 — май 2018

Что нового появилось/произошло в Qt за полгода почти год с прошлой статьи. Релизы 5.9 и 5.10, а также новые инструменты, аддоны, платформы и переход на подписочную модель лицензирования.

Qt audio engine это что. image loader. Qt audio engine это что фото. Qt audio engine это что-image loader. картинка Qt audio engine это что. картинка image loader

Я бы хотел писать о новостях чаще, чем раз в полгода год, но получается как получается. Эту статью я вообще начинал писать в январе, но закончить удалось только сейчас.

Сегодня содержание такое:

Конференции и выставки

Qt Contributors Summit 2017

Это конференция разработчиков Qt. Не только тех, кто работает в The Qt Company (их даже было меньше половины участников), а вообще всех желающих, кто участвует в проекте.

В 2017 году Qt Contributors Summit был совмещён с Qt World Summit 2017, и проходил в Берлине. Программа и конспекты сессий опубликованы на вики.

В этом году было решено провести конференцию в Осло, то есть World Summit на этот раз пройдёт отдельно.

Qt World Summit 2017

Мероприятие (конференция), которое организует сама The Qt Company. В 2017 году саммит прошёл в Берлине. По числу посетителей получился рекорд — около 1000 человек (в прошлом было 800?).

В адресе страницы события (https://www.qtworldsummit.com) год не указан, потому, надо полагать, скоро эта ссылка начнёт указывать на саммит 2018 года (уже указывает), а 2017 уедет куда-нибудь в архив (нет, просто куда-то дели). Но пока не уехала (уже уехала) — можно посмотреть программу конференции и участников выставки. Там же можно было загрузить мобильное приложение саммита, написанное на Qt (точнее, на V-Play), и поразиться тому, как оно тормозит и крашится на каждый чих, спасибо партнёрам-разработчикам. Почему мы сами который год не можем написать приложение для собственного саммита — непонятно.

На выставке в центре зала показывали новые разработки:

Вокруг стояли стенды партнёров и клиентов, которые показывали что-то из своего. Например, Mercedes-Benz прикатили вот такой концепт-кар.

Начиная с 2018 года, саммитов теперь несколько и проходить они будут в разное время и разных местах. В этом году будет 2: американский (Бостон) и европейский (Берлин) — оба ближе к концу года. Далее планируется добавить третий для стран Азии (возможно, в Токио).

Qt на Embedded World 2018

Как и в прошлом году, мы были на выставке Embedded World в Нюрнберге.

Из интересных демо можно выделить:

Что вообще нового

Изменения в коммерческой лицензии

Начиная с января 2018, лицензии Qt для всех продуктов перешли на модель подписки (term-based), то есть больше нельзя приобрести «пожизненную» лицензию. Вообще, для тех кто до этого и так «продлял» лицензию каждый год (для обновлений и поддержки) ничего особо не поменялось, потому что фактически это уже и была подписочная модель. Но есть отличие: раньше можно было не продлять лицензию и спокойно продолжать разрабатывать/распространять свой продукт (сама лицензия-то пожизненная), но теперь условия лицензионного соглашения это запрещают — у вас должна быть хотя бы одна активная подписка, иначе нельзя ни вести разработку, ни продавать уже готовый продукт. Вот это поворот!

Я представляю, что вы хотите сказать мне на тему лицензий-подписок, я и сам всё это не раз говорил разработчикам тех или иных приложений (Ulysses, например), но не я это придумал, я только доставляю новость. Но вообще, для фреймворка подписочная лицензия выглядит более-менее оправданной (по сравнению с подпиской на текстовый редактор).

Из положительных изменений — если вы приобретаете Device Creation, то лицензия Application Development теперь входит в его состав. Кроме того, раньше для RTOS (операционных систем реального времени) была отдельная цена для каждой, а теперь всё включено.

Всё это отражено в новом лицензионном соглашении (License Agreement version 4.0, которое кстати больше не разделяется на отдельные соглашения для Application Development и Device Creation.

Изменения на сайте

Работа над «улучшением» вебсайта не останавливается ни на минуту, и длина списка подключённых сторонних скриптов уже больше километра. Анимация всего подряд позволила достичь утилизации процессора пользователя на уровне 80-90% и соответствующего энергопотребления, что, однако, не осталось незамеченным для посетителей, потому сейчас идёт героическая борьба за оптимизацию всех этих красот.

Где-то в мае 2017 очередной эффективный менеджер решил запрятать Open Source загрузки куда подальше и поставить побольше кнопок Buy Qt («купи лицензию»). Запрятали настолько хорошо, что нам даже стали присылать письма с вопросом «Почему вы удалили Open Source?!«. К счастью, встретив критику как от Open Source сообщества, так и внутри компании, через каких-то полгода это изменение пересмотрели и вернули всё почти как было.

Появился новый раздел — Qt Resource Center, такой агрегатор различных ресурсов (статьи, видео, «истории успеха» и т.д.) с разделением на категории и поиском. Теперь можно, например, разом заполучить все твиты официального аккаунта (но зачем).

Релизы

Qt 5.9

31 мая 2017 вышел Qt 5.9. Он же следующий после Qt 5.6 релиз LTS — с долгосрочной поддержкой (3 года).

В статье на OpenNET уже есть отличный обзор.

Кстати, это вроде бы первый релиз со времён Qt 4.7, для которого было выпущено более трёх корректирующих (minor) релизов (текущая версия 5.9.5).

И начиная с этой версии, корректирующие (minor) релизы теперь опять не обновляют текущий, а устанавливаются отдельно:

Qt audio engine это что. image loader. Qt audio engine это что фото. Qt audio engine это что-image loader. картинка Qt audio engine это что. картинка image loader

Qt 5.10

И опять прекрасный обзор релиза в статье на OpenNET.

Аддоны

В дополнение к обычным (базовым) лицензиям (Application Development и Device Creation) теперь будут появляться «аддоны». Вообще, хотели сделать что-то вроде магазина аддонов/плагинов (как qpm, только официальный), но дальше идеи пока не пошло, потому они будут просто добавляться в установщике.

Если взять за основу схему из прошлой статьи, то новая выглядит так:

Qt audio engine это что. image loader. Qt audio engine это что фото. Qt audio engine это что-image loader. картинка Qt audio engine это что. картинка image loader

И без того непростая структура лицензирования стала ещё сложнее. Если попытаться объяснить всё вкратце, то аддоны в «стандартные» лицензии не входят и продаются за дополнительные деньги. Учитывая, что не всем интересно читать про коммерческие лицензии, я подробно расписывать не буду (кроме того, надо и отделу продаж дать поработать).

Если же вы используете Qt под Open Source, то для вас ничего не поменялось — просто добавились новые библиотеки и инструменты.

Qt for Automation

Qt for Automation — первый аддон, объявленный в августе 2017. Представляет собой пакет библиотек для построения решений для так называемых Industry 4.0 и M2M.

На данный момент (Qt 5.10) в состав аддона входят:

С Qt 5.11 должен появиться OPC UA, затем CoAP и другие. Кроме самих библиотек также предоставляется пакет сервисных услуг по установке/настройке/обучению.

Qt for Medical

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

На самом деле, для связанных с медициной проектов больше важна сертификация, чем фичи, и потому мы теперь входим в состав таких ассоциаций и альянсов как AdvaMed, Qmed и MassMEDIC. Я от этой индустрии далёк, потому о реальной пользе от вхождения в эти альянсы ничего сказать не могу.

Qt 3D Studio

В октябре 2017 исходники Qt 3D Studio были наконец-то опубликованы (статья на OpenNET). Почему не опубликовали сразу после получения их от Nvidia — потому что там всё было написано на MFC, и решили сначала портировать это на Qt.

Через месяц после публикации исходников выпустили и версию 1.0. В ней всё ещё используется собственный 3D движок за авторством Nvidia, но уже почти закончена работа по переводу его на уже существующий Qt 3D (потому что хватит плодить движки).

Qt 3D Studio и её рантайм доступны как под коммерческой лицензией, так и под GPLv3 (под LGPLv3 нет). Сама студия бесплатная, но использование её рантайма в вашем коммерческом приложении увеличивает стоимость лицензий на распространение (если таковые полагаются).

Qt Design Studio

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

Но на всякий случай, пока без особых подробностей. Когда-то скоро должен состояться официальный анонс (через пару недель?) и первая публичная бета-версия (в июне?).

Qt Safe Renderer

Qt Safe Renderer — это сертифицированный (IEC 61508 и производные стандарты functional safety) рендерер графики. Фактически отдельное приложение, которое рендерит критичные элементы GUI независимо от главного приложения. И если главное приложение «помрёт», то эти элементы продолжат отображаться на экране.

Очевидные сферы применения: автомобильная и медицинская индустрии, где зависание главного приложения на скорости 200 км/ч или во время хирургической операции чревато негативными последствиями.

Пример использования в цифровом инструментальном кластере (дашборде) автомобиля:

Qt audio engine это что. image loader. Qt audio engine это что фото. Qt audio engine это что-image loader. картинка Qt audio engine это что. картинка image loader

Если интересно, я могу написать отдельную статью с «живым» примером на железе под управлением QNX (в конце статьи будет опрос). Но сразу хочу сказать, что Safe Renderer в Open Source не попадёт и будет доступен только за деньги (и очень немаленькие).

Roadmap

Qt на микроконтроллерах (MCU)

Очень часто спрашивают, можно ли использовать Qt для разработки ПО, и частности GUI, на микроконтроллерах.

И вот мы провели исследование, завершившееся портированием Qt под операционную систему реального времени RTEMS и оптимизацией сборки Qt для запуска на микроконтроллерах STM32F469, STM32F746 и STM32F769.

О результатах исследования недавно вышел пост в официальном блоге, и кстати говоря, оригинал этого поста вообще-то был написан на русском, так что с минимальными усилиями его можно опубликовать и на Хабре (об этом тоже будет опрос в конце статьи).

Пока идёт сбор отзывов от клиентов, кто куда и что хотел бы портировать, и потом на основе пожеланий будет планироваться дальнейшее развитие.

Вакансии

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

Вот например уже больше полутора лет (серьёзно) в берлинский офис разыскивается sales engineer — это такой человек, который разбирается в Qt и при этом может разговаривать с людьми (клиентами) и отвечать на их технические вопросы. Уже настолько отчаялись найти, что возьмём кого угодно будем рады любым кандидатам. Кстати, не самый плохой способ завести трактор, хотя наверное мне не стоит такое говорить. Осложняется вакансия тем, что так как позиция в Берлине, то очень желательно знание ещё и немецкого.

Всего в 2017 наняли около 130 человек. Люди приходят из всех (включая русскоязычные) частей планеты, никаких рассовых/религиозных/половых предпочтений/предрассудков нет (кроме того что на позиции эффективных менеджеров берут только чаще финнов (шутка)).

Заключение

Если хотите узнать о чём-то подробнее, пишите комментарии, я постараюсь ответить сам или узнать у тех кто знает.

Дополнение №1 — Про Qt Quick Compiler

Сначала Qt Quick Compiler обещали отдать в Open Source с релизом Qt 5.8. Правда, там было сказано «. integrate the Qt Quick Compiler functionality«, то есть как бы не сам Qt Quick Compiler, а только его функциональность. Забегая вперёд, это и так и не так одновременно.

В Qt 5.8 появился механизм кэширования QML, который анонсировался как «замена» Qt Quick Compiler. Сам Qt Quick Compiler при этом никуда не делся и был доступен для обладателей коммерческих лицензий как в релизе 5.8, так и в 5.9, так и в 5.10. В 5.11 ситуация изменится, об этом чуть ниже.

Теперь про Open Source. Исходники Qt Quick Compiler открыты не будут, потому что менеджмент решил, что в этом случае народ сможет его портировать на старые версии Qt, где этот компонент был доступен только коммерческим пользователям, которые могут от этого огорчиться.

Почему я назвал Qt Quick Compiler «старым» и вообще использовал прошедшее время? Потому что он прекращает своё существование как генератор C++ кода из QML/JS, и в Qt 5.11 он станет доступен во-первых, всем пользователям, а не только обладателям коммерческой лицензии, а во-вторых, его реализация будет существенно отличаться от текущей, и он больше не будет генерировать C++ код, а будет генерировать тот же байт-код, что и QML кэшинг.

В чём же тогда разница между «новым» Qt Quick Compiler’ом и QML кэшингом, раз они дают один и тот же байт-код? Пересказывая вкратце документацию релиза 5.11, «новый» Qt Quick Compiler предоставляет следующие возможности, которых нет у QML кэшинга:

Проще говоря, этим «новый» Qt Quick Compiler повторяет функционал «старого».

Ну и соответственно не будет смысла использовать одновременно и QML кэшинг, и Qt Quick Compiler. Точнее, у вас этого и не получится, потому что они взаимоисключаются. QML кэшинг работает из коробки в неявном виде, а Qt Quick Compiler нужно явным образом задействовать, в результате чего механизм кэшинга просто «отключится» (что логично). И кстати, понятное дело, теперь между ними нет разницы в производительности, так как в сути своей оба механизма делают одно и то же.

Почему бы тогда просто не использовать всегда Qt Quick Compiler, что за смысл тогда в QML кэшинге? Как указано в документации, у Qt Quick Compiler’а будет ряд ограничений, которые подойдут не всем проектам, потому какие-то проекты будут полагаться на один механизм, а какие-то смогут воспользоваться другим.

Ещё одно отличие — если используя «старый» Qt Quick Compiler вы не могли использовать JIT (потому что результатом его работы был C++ код (хотя тут есть ещё и второе дно)), то «новый» Qt Quick Compiler а также QML кэшинг смогут использовать также и JIT для особо востребованных фрагментов кода. Короче говоря, до Qt 5.11 JIT ничего не давал поверх уже «скомпилированного» QML, а начиная с 5.11 — будет.

Кстати, тут оказалось, что у нас как раз готовится статья на эту тему, так что скоро сможете почитать в официальном блоге (там кстати есть RSS) более грамотное/корректное объяснение происходящего.

Про iOS стиль для Qt Quick Controls 2

Как таковой стиль был более-менее готов ещё в феврале 2016:

Qt audio engine это что. image loader. Qt audio engine это что фото. Qt audio engine это что-image loader. картинка Qt audio engine это что. картинка image loader

Но в релиз не попал по ряду причин, включая и юридические.

Apple совершенно не против приложений, которые не выглядят «нативно», то есть можно творить любое безумие и всё будет нормально (кроме количества звездей от ваших пользователей). Но как только речь заходит о «родном» стиле iOS, то там всё должно выглядеть идеально и строго соответствовать гайдлайнам.

Дизайны/гайдлайны стилей Material (Android) и Universal (Windows) не только находятся в общем доступе (мне так сказали), но также и не ограничены какой-то одной платформой, и Google как и Microsoft напротив всячески поощряют распространение своих дизайнов на все платформы, не только мобильные, но и десктопы с вебом, включая платформы конкурентов. Всего этого нельзя сказать про iOS.

Ну и потому любая попытка «воссоздать» стиль iOS будет лишь имитацией и подражанием оригинальному стилю. Говоря о «look and feel», часть, которая «look», уже достаточна сложна для воссоздания, но часть «feel» — вообще нереальна. То есть GUI может и будет выглядеть «родным», но первый же свайп / скролл / пинч выдадут «подделку».

Также в результате исследования оказалось, что это чревато как раз-таки юридическими проблемами — если мы будем выдавать наш стиль за «родной» стиль iOS, то Apple может сказать что-то неприятное. Плюс приложения наших клиентов могут получить отказ в App Store по причине несоответствия UX гайдлайнам.

Кроме того, всплыл ещё один интересный момент. Так как наша реализация стиля iOS разумеется запилена на Qt, который вообще-то является кроссплатформенным фреймворком, то внезапно китайские «производители» клонов iPhone/iPad смогут использовать наш стиль в своих ведроподелиях. Честно говоря, я не понимаю, почему нас это должно волновать, но вот тем не менее, мне сказали, что это проблема.

Отличным решением может стать вот этот проект, я его уже упоминал в прошлых статьях. Вкратце, это использование реально «родного» GUI платформы (а не «воссозданного» стиля) через QML (или C++, если угодно). Но из того, что я вижу во внутреннем трекере, последняя активность по этой задаче была в октябре 2017 и с тех пор тишина.

Теперь про то, что предлагает V-Play. Я, честно говоря, не знаю, и команда тоже не ответила. Но учитывая вышесказанное, есть два варианта:

Можно попытаться связаться с V-Play и спросить у них самих. Но они могут не захотеть делиться такой информацией.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *