The qt company ltd что это

Qt: Embedded World 2017 и roadmap

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

Я работаю в The Qt Company (в офисе Осло, Норвегия), и видя как обделено вниманием весьма немаленькое русскоязычное сообщество, я решил написать эту статью на русском и рассказать немного о прошедшей на позапрошлой неделе в Нюрнберге конференции Embedded World 2017, а также поделиться планами компании на будущие релизы Qt. Но хотя статья и на русском, ссылки всё же ведут на английскую документацию, а также некоторые термины я решил оставить в оригинале.

Embedded World 2017

Embedded World — это ежегодная выставка, посвящённая embedded («встраиваемым») решениям и всему с этим связанным. Здесь присутствуют производители «железа» (портативные устройства, платы и микроконтроллеры от Intel, NVIDIA, Toradex, NXP, Qualcomm и других), программного обеспечения (операционные системы и фреймворки от Microsoft, QNX, Green Hills, Wind River и других), а также множество сервисных компаний.

Ну и конечно The Qt Company тоже принимала участие в выставке, так как разработка под embedded платформы для компании сейчас является приоритетным направлением. В этом году у нас был самый большой стенд — 200 квадратных метров — наравне с Microsoft и Intel. Кроме нашего стенда Qt можно было увидеть также и на стендах других компаний (включая Microsoft), просто потому что они использовали Qt в своих продуктах (например).

И кстати, проходя по выставке, встретили одну сервисную компанию sequality, которая помимо прочего внезапно показывала на своём стенде сравнение HTML и QML. Мы, конечно же, немедленно взяли у них интервью. Суть их демонстрации в том, что одно и то же приложение было реализовано на HTML (AngularJS) и на QML, при этом разработчик не имел до этого опыта работы с QML:

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

The Qt Company

Кроме уже стандартного набора демо (Boot to Qt, профилирование и отладка на embedded платформах, использование Qt SCXML) были показаны и новые.

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

Automotive Suite

Анонсированный в июне 2016 Automotive Suite — фреймворк для создания цифрового инструментального кластера и IVI в автомобилях — приобретает всё более отчётливую форму. В «автомобильной части» стенда демонстрировался пример решения на основе совместной работы RTOS INTEGRITY (для инструментального кластера) и Embedded Linux (для IVI — Neptune UI, менеджер приложений и примеры самих приложений: навигация, музыкальный плеер и т.д.) под управлением гипервизора на одном девайсе (head-unit). Само-собой, инструментальный кластер и IVI выводятся на разные дисплеи (фото не с самой выставки, но выглядело примерно так же):

The qt company ltd что это. a3127e1e22c64ff2a90ceccc530272b0. The qt company ltd что это фото. The qt company ltd что это-a3127e1e22c64ff2a90ceccc530272b0. картинка The qt company ltd что это. картинка a3127e1e22c64ff2a90ceccc530272b0

Также уже по традиции демонстрировалась быстрая загрузка устройства с использованием Boot to Qt:

Qt Configuration Tool (Qt Lite)

Qt Configuration Tool — инструмент для настройки сборки Qt. Демонстрировалось, как можно исключить ненужные компоненты, просто «отжимая» соответствующие чекбоксы в дереве компонентов, и переконфигурировать Qt, получив меньший размер сборки.

Qt 3D Studio

Qt 3D Studio — бывшая NVIDIA DRIVE Design Studio. Показали текущее (уже рабочее) состояние инструмента, демонстрируя создание простого шаблона IVI с интеграцией результата в виде QML-объекта и взаимодействие с ним.

Пример использования в промышленной автоматизации

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

Звучит не очень захватывающе, но вживую это выглядело более интересно — с помощью этого сенсора нужно было собрать на дисплее логотип Qt из трёх вращающихся элементов, каждый из которых реагировал на изменения определённой оси гироскопа. Как я сказал, все изменения отображались также и на Android-планшете, что и было целью демонстрации — в промышленной автоматизации достаточно распространены сценарии, когда оборудование раскидано по огромной территории условного завода, а инженеру нужно контролировать это всё со своего (мобильного) рабочего места.

Кроме демо и небольших презентаций также отвечали на вопросы посетителей. Всё ещё попадаются вопросы вида «а Qt это разве не просто UI-фреймворк для Линукса? Вы ещё и в embedded что-то делаете?«.

Партнёры

На нашем стенде кроме самой The Qt Company были представлены также партнёры по экосистеме: KDAB, froglogic, Witekio, brightONE, basysKom, e-GITS, Toradex, LinkMotion. Также демонстрировались продукты клиентов компании: Rimac и Ulstein.

KDAB демонстрировали инструмент для интроспекции Qt-приложений — GammaRay:

The qt company ltd что это. aa3ca0beab4e453abd4c9bd3b5513b7d. The qt company ltd что это фото. The qt company ltd что это-aa3ca0beab4e453abd4c9bd3b5513b7d. картинка The qt company ltd что это. картинка aa3ca0beab4e453abd4c9bd3b5513b7d

А также показывали возможности трёхмерной диагностики автомобиля с использованием дополненной реальности. Как это работало — на кузове автомобиля были нанесены QR-коды, а в приложении на планшете можно было наводить камеру на ту или иную часть машины, и на экране «дорисовывался» трёхмерный объект, например, двигателя.

froglogic

Демонстрировали Squish — инструмент для тестирования, который позволяет проводить GUI-тесты не только для десктопных приложений, но и на embedded платформах.

The qt company ltd что это. 2b4ab8e4ce234acaa11338dd214e0399. The qt company ltd что это фото. The qt company ltd что это-2b4ab8e4ce234acaa11338dd214e0399. картинка The qt company ltd что это. картинка 2b4ab8e4ce234acaa11338dd214e0399

LinkMotion

Представляли свой бортовой компьютер (carputer) — уже готовое решение (железо плюс софт), реализующее сразу и инструментальный кластер (спидометр, тахометр и прочее), и IVI (развлекательная система внутри автомобиля: медиа, приложения, навигация и т.д.):

The qt company ltd что это. 050d8936e5dc41e19e376ab5217d51b1. The qt company ltd что это фото. The qt company ltd что это-050d8936e5dc41e19e376ab5217d51b1. картинка The qt company ltd что это. картинка 050d8936e5dc41e19e376ab5217d51b1

Rimac

Rimac — это крутая автомобильная компания из Хорватии, создатель электросуперкаров, которые уделывают Porshe 918 и LaFerrari. Они привезли на выставку свой Concept One, который стоял в самом центре стенда:

The qt company ltd что это. c679b64535854669bb6a5548367c907d. The qt company ltd что это фото. The qt company ltd что это-c679b64535854669bb6a5548367c907d. картинка The qt company ltd что это. картинка c679b64535854669bb6a5548367c907d

The qt company ltd что это. c59fe43ec9fd4b46a6a4e0977551958f. The qt company ltd что это фото. The qt company ltd что это-c59fe43ec9fd4b46a6a4e0977551958f. картинка The qt company ltd что это. картинка c59fe43ec9fd4b46a6a4e0977551958f

Rimac использовали Qt при разработке внутренних систем автомобиля (UI, сбор информации с датчиков, взаимодействие с сервером):

The qt company ltd что это. 96e8b695116b455f9d36e73e33257073. The qt company ltd что это фото. The qt company ltd что это-96e8b695116b455f9d36e73e33257073. картинка The qt company ltd что это. картинка 96e8b695116b455f9d36e73e33257073

Roadmap

Краткий обзор запланированных изменений и новых компонентов Qt. Большая часть информации уже была опубликована в блоге. Список изменений грядущей версии 5.9 можно посмотреть на вики.

Так выглядел старый roadmap:

The qt company ltd что это. image loader. The qt company ltd что это фото. The qt company ltd что это-image loader. картинка The qt company ltd что это. картинка image loader

За исключением Qt Quick Compiler к текущей версии 5.8 всё было реализовано по плану. А вот новый roadmap:

The qt company ltd что это. image loader. The qt company ltd что это фото. The qt company ltd что это-image loader. картинка The qt company ltd что это. картинка image loader

И далее чуть более подробнее.

Новые продукты

На данный момент компания предлагает два (три) продукта: Application Development и Device Creation. К ним почти присоединился Automotive Suite.

Сейчас идёт работа над созданием продукта для индустриальной автоматизации и, возможно, отдельного продукта для STB, они же set-top box (ТВ-приставки).

Marketplace

Это, если можно так сказать, «магазин приложений» внутри Qt, только вместо приложений будут библиотеки и плагины. Как бы NuGet для Visual Studio. Сейчас ничего точно не известно, всё ещё только обсуждается, но идея такая, что любая компания может опубликовать свой плагин/библиотеку в «Qt Store» — например, реализацию протокола KNX, и далее любой пользователь может приобрести этот плагин/библиотеку и использовать его в своём проекте. Всё публикуемое в сторе будет предварительно проходить проверки на совместимость и прочее такое, чтобы для пользователя процесс установки и использования был максимально простым. Компания-разработчик, соответственно, получает свою долю от продажи, Qt — свою комиссию. Конкретное процентное соотношение ещё даже не начало обсуждаться, всё это только планы и идеи.

Сейчас это подготавливается в рамках предложения для индустриальной автоматизации (потому я привёл пример с KNX), но, безусловно, это должно стать доступно во всех продуктах Qt.

Qt Creator

Глядя на то, как используется Qt Quick Designer (почти никак), было решено совместить режим кода и режим дизайна:

The qt company ltd что это. image loader. The qt company ltd что это фото. The qt company ltd что это-image loader. картинка The qt company ltd что это. картинка image loader

Графика

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

Идёт разработка механизма для совместного использования таких ресурсов как битмапы (изображения) с целью уменьшения потребления памяти в мультипроцессорных системах. В результате будет сокращено время запуска приложения и, собственно, снижено потребление оперативной памяти.

Возможность использования не только OpenGL, но и других графических бэкэндов, например Vulkan. Конкретно в Qt 5.9 ожидается поддержка OpenVG, что позволит запускать Qt Quick приложения на платформах без поддержки OpenGL, но имеющих OpenVG — однако, по аналогии с 2D Renderer, не все возможности будут доступны (к примеру, графические эффекты, частицы).

Qt Quick

Сразу скажу, что для Qt Widgets по-прежнему ничего нового не планируется, виджеты считаются «устоявшейся» технологией, к тому же не очень подходящей для embedded платформ (которые сейчас в приоритете), потому Qt Quick остаётся в фокусе, и всё новое будет появляться именно здесь. Однако, это не означает, что виджеты будут заброшены — исправления и улучшения будут продолжать выходить, но рассчитывать на что-то новое для них не приходится (хотя обсуждения на эту тему ведутся внутри команды разработки).

Продолжается работа над реализацией встроенного функционала Qt Quick Compiler. На очереди добавление «ahead-of-time» генерации кэша в дополнение к уже реализованному механизму кэширования. По плану Qt Quick Compiler должен был «исчезнуть» ещё в версии 5.8(9), однако не всё пошло по плану, и потому коммерческие пользователи по-прежнему имеют это преимущество перед пользователями Open Source версии (в которой Qt Quick Compiler отсутствует).

Новые элементы Qt Quick Controls: во-первых, уже достаточно давно обещанный TableView, а также DelayButton, ScrollView, редактируемый ComboBox и поддержка «множественного касания» (мультитач).

Улучшения в движке QML. Из наиболее значительного — переработка сборщика мусора с целью улучшения производительности и уменьшения потребления памяти Qt Quick приложениями.

Path rendering (примитивы) в Qt Quick. Это позволит декларативно создавать сложные фигуры из линий, кривых и дуг используя непосредственно QML (с аппаратным ускорением), что означает существенный прирост производительности по сравнению с текущим положением дел. Будут также специфичные расширения в зависимости от вендора (для железа от NVIDIA, например).

The qt company ltd что это. image loader. The qt company ltd что это фото. The qt company ltd что это-image loader. картинка The qt company ltd что это. картинка image loader

WebGL streaming

Недавно анонсированный WebGL-стриминг (трансляция GUI) позволяет использовать веб-браузер (или опять же Qt приложение) в качестве «удалённого дисплея» для девайса, который будет «транслировать» свой GUI по сети.

В случае с браузером всё будет работать без необходимости предустанавливать что-либо на клиент (десктоп, планшет, телефон) — нужна лишь поддержка WebGL в браузере.

Ввод с мыши/клавиатуры/тачскрина будет передаваться обратно в Qt приложение на девайсе.

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

Экспериментальный набор UI элементов

Так называемые native common controls. На данный момент это исключительно в рамках эксперимента по реализации универсального набора «нативных» контролов, которые будут выглядеть как «родные» на всех поддерживаемых платформах.

Продвинется ли проект дальше эксперимента — пока не известно. Как это будет соотноситься с существующими Qt Quick Controls — пока не известно.

Несколько направлений, в которых ведётся разработка:

Qt 3D Studio

Довольно нередки вопросы по поводу инструментов для дизайнеров, и особенно инструментов по созданию 3D интерфейсов — как ни странно, но оказалось, что это довольно востребовано, и основной поток запросов поступает из авто-индустрии (3D в инструментальном кластере и IVI), а также от производителей бытовой техники (кофемашины, «умные» холодильники и прочее).

До текущего момента из подобного был лишь Qt Designer (который, на самом деле, не очень подходит для дизайнеров), а также импорт из Photoshop’а посредством PNG Express (кстати, забегая вперёд, для импорта из сторонних редакторов будет представлен новый механизм, но сейчас не об этом).

Но теперь, как было объявлено, NVIDIA безвозмездно предоставила свой продукт NVIDIA DRIVE Design Studio, как вклад в развитие Qt. Это как раз-таки редактор для создания 3D GUI, ориентированный больше на дизайнеров, чем на разработчиков.

NVIDIA решила, что так продукт будет получит более светлое будущее, потому как они столкнулись с некоторым недоверием на рынке — использование продукта подразумевало «железную» зависимость от NVIDIA, так как работать результат мог только на аппаратном обеспечении NVIDIA. Соответственно, под управлением The Qt Company решение будет «освобождено» от этих «недостатков». Работа уже ведётся, и одним из первым поддерживаемых не-NVIDIA девайсов был(а) выбран(а) Raspberry Pi.

В целом же, интеграция решения в Qt не ограничивается лишь сменой логотипа и переименованием. В планах реализация максимально «плотной» интеграции с задействованием уже существующего 3D фреймворка Qt.

Запланированная дата публичной бета-версии — где-то во второй половине 2017. Полноценный релиз, вероятно, уже в 2018. Сейчас проект не распространяется даже внутри компании, всё лежит в закрытом репозитории, но относительно скоро должны раздать доступ, и тогда я думаю написать некоторый обзор «из первых рук».

Платформы

«Оживление» поддержки RTOS INTEGRITY.

Работа над поддержкой платформ Apple. Apple TV: tvOS — на 95% почти то же самое, что и iOS, потому поддержка этой платформы по крайней мере заявлена. Основные затруднения сейчас вызывает система ввода (так как там используется пульт), однако первые демо уже успешно опробовали. Apple Watch: на данный момент поддерживается без GUI — то есть, аудио, сеть, какая-нибудь фоновая обработка и прочее.

Что ещё

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

P.S. Компания сейчас активно нанимает людей, в этом году планируется найти более ста человек (не только разработчиков). Про хантинг в статьях не рекомендуется, я знаю, но просто возможности компании по поиску людей в неанглоговорящих странах ограничены, потому вряд ли когда-либо появятся объявления на moikrug.ru, HH и других. В общем, если интересно, я могу рассказать немного подробнее.

P.P.S. А вложенные списки в HTML-разметку так и не завезли? Или автогенерирующееся содержание (TOC)?

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

Источник

[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

The qt company ltd что это. image loader. The qt company ltd что это фото. The qt company ltd что это-image loader. картинка The qt company ltd что это. картинка image loader

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

Qt for Device Creation

The qt company ltd что это. 59d28560caba0277056805. The qt company ltd что это фото. The qt company ltd что это-59d28560caba0277056805. картинка The qt company ltd что это. картинка 59d28560caba0277056805

Qt Creator

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

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

История

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

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

The qt company ltd что это. 59d285603c71a001678060. The qt company ltd что это фото. The qt company ltd что это-59d285603c71a001678060. картинка The qt company ltd что это. картинка 59d285603c71a001678060

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

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

The qt company ltd что это. 59d285603c739566183175. The qt company ltd что это фото. The qt company ltd что это-59d285603c739566183175. картинка The qt company ltd что это. картинка 59d285603c739566183175
Ранняя версия сайта Trolltech

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

1996: Qt 1.0

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

New Project: Kool Desktop Environment (KDE)

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

The qt company ltd что это. 59d285608887b844198740. The qt company ltd что это фото. The qt company ltd что это-59d285608887b844198740. картинка The qt company ltd что это. картинка 59d285608887b844198740

1999: Qt 2.0

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

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

The qt company ltd что это. 59d28560bd4ca950388230. The qt company ltd что это фото. The qt company ltd что это-59d28560bd4ca950388230. картинка The qt company ltd что это. картинка 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, то это сложно.

Источник

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

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