LINUX.ORG.RU

История изменений

Исправление EXL, (текущая версия) :

Активно изучаю Qt5, накупил литературы.

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

, как простота написания

Только интерфейсов. Как только начинается логика, так начинаются Js-костыли или склеивание соплями QtQuick-кода с C++.

читабельность

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

аппаратное ускорение отрисовки

Аппаратное ускорение отрисовки это сила и слабость QtQuick на всех платформах. Когда железо имеет хорошие OpenGL-драйвера, то всё работает просто отлично. Но как только железо начинает отличаться от тестовых стендов Qt-разработчиков — тут-то и начинается огромная куча проблем и постоянные косяки в виде побитых или мерцающих текстур, чёрных окошек и прочих глюков. На некоторых системах эти проблемы завязывают на жуткие костыли вроде трансляции OpenGL ES -> ANGLE -> DirectX, иначе, например, приложения не работают через RDP. В конце-концов, была запилена и программная отрисовка для QtQuick-приложений: http://doc.qt.io/QtQuick2DRenderer/, прямо как в Qt 4.

вкратце рассказать о плюсах и минусах виджетов и QML.

Qt Widgets:
+ Проверенное решение, 99% Qt-приложений используют именно их;
+ Скорость работы и отзывчивость интерфейсов;
+ Возможность проектирования сложных GUI по типу: https://www.hex-rays.com/products/ida/pix/idalarge.gif;
+ Поддержка в некоторых IDE и системах сборки;
+/- Приелимая мимикрия под стандартные системные контролы, но в некоторых системах имеются проблемы с внешним видом (например, в macOS);
- Очень редко обновляются и практически не развиваются, из последнего добавлена только поддержка HiDPI;
- The Qt Company может вскоре отказаться от развития и поддержки QtWidgets (вспоминаем QtScript, QtWebkit и пр.);
- Из-за MOC и прочих надкомпиляторов большие QtWidgets-проекты компилируются достаточно долго;
- На Android и iOS выглядят как говно и работают точно так же.

QML/Qt Quick:
+ Очень быстрое прототипирование и последующая разработка интерфейсов;
+ Для написания GUI лучший синтаксис ever;
+ Создание красивых анимаций из коробки без всякого красноглазого матанзадротства;
+ Легкая кастомизация уже существующих GUI-элементов;
+ Идеальный выбор для Kiosk- и Mobile- приложений, для анимированных GUI;
+ Лучшая (чем у QtWidgets) кросс-платформенность;
+ Можно встраивать виджетами в QtWigdets;
- Поддержки родных системных контролов по сути нет. То что есть — ужас и срам. Тулкит хоть и поддерживает кое-какие HIG'и (Material, Simple и др.), но является инородным абсолютно везде;
- Сообщество очень небольшое и мелкое, какие-то возникающие проблемы нагуглить сложно, приходится писать в рассылку или в прочие Developer'ские каналы. C QtWidgets или Electron (конкурент QtQuick) — значительно легче получить помощь;
- Для написании сложной логики нужно будет делать Js или C++ вставки, в случае последнего всё это связывать клеем;
- Не сыскал популярности со всеми вытекающими. Десктопных приложений очень мало. Мобильные приложения тоже пишут больше на родных, а то и Web-костылях. Единственное широкое распространение: KDE Plasma 5, Sailfish и ныне покойные Ubuntu Touch и Unity 8;
- Куча проблем из-за аппаратного ускорения отрисовки. На офисной Win-машинке со слабым GPU и отсутствием поддержки OpenGL 2.0 придётся использовать жуткие костыли в виде ANGLE, иначе просто ничего не будет запускаться. С ноутбуками и встройками от Intel/AMD тоже всё не очень гладко и куча проблем;
- Медленно, жрёт ресурсы CPU и RAM. JavaScript-интерпретатор со всеми вытекающими. Тянет много тяжёлых либ, есть требования от GPU;
- В популярных IDE слабая поддержка QML или её там нет вообще.

Исходная версия EXL, :

Активно изучаю Qt5, накупил литературы.

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

, как простота написания

Только интерфейсов. Как только начинается логика, так начинаются Js-костыли или склеивание соплями QtQuick-кода с C++.

читабельность

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

аппаратное ускорение отрисовки

Аппаратное ускорение отрисовки это сила и слабость QtQuick на всех платформах. Когда железо имеет хорошие OpenGL-драйвера, то всё работает просто отлично. Но как только железо начинает отличаться от тестовых стендов Qt-разработчиков — тут-то и начинается огромная куча проблем и постоянные косяки в виде побитых или мерцающих текстур, чёрных окошек и прочих глюков. На некоторых системах эти проблемы завязывают на жуткие костыли вроде трансляции OpenGL ES -> ANGLE -> DirectX, иначе, например, приложения не работают через RDP. В конце-концов, была запилена и программная отрисовка для QtQuick-приложений: http://doc.qt.io/QtQuick2DRenderer/, прямо как в Qt 4.

Qt Widgets:
+ Проверенное решение, 99% Qt-приложений используют именно их;
+ Скорость работы и отзывчивость интерфейсов;
+ Возможность проектирования сложных GUI по типу: https://www.hex-rays.com/products/ida/pix/idalarge.gif;
+ Поддержка в некоторых IDE и системах сборки;
+/- Приелимая мимикрия под стандартные системные контролы, но в некоторых системах имеются проблемы с внешним видом (например, в macOS);
- Очень редко обновляются и практически не развиваются, из последнего добавлена только поддержка HiDPI;
- The Qt Company может вскоре отказаться от развития и поддержки QtWidgets (вспоминаем QtScript, QtWebkit и пр.);
- Из-за MOC и прочих надкомпиляторов большие QtWidgets-проекты компилируются достаточно долго;
- На Android и iOS выглядят как говно и работают точно так же.

QML/Qt Quick:
+ Очень быстрое прототипирование и последующая разработка интерфейсов;
+ Для написания GUI лучший синтаксис ever;
+ Создание красивых анимаций из коробки без всякого красноглазого матанзадротства;
+ Легкая кастомизация уже существующих GUI-элементов;
+ Идеальный выбор для Kiosk- и Mobile- приложений, для анимированных GUI;
+ Лучшая (чем у QtWidgets) кросс-платформенность;
+ Можно встраивать виджетами в QtWigdets;
- Поддержки родных системных контролов по сути нет. То что есть — ужас и срам. Тулкит хоть и поддерживает кое-какие HIG'и (Material, Simple и др.), но является инородным абсолютно везде;
- Сообщество очень небольшое и мелкое, какие-то возникающие проблемы нагуглить сложно, приходится писать в рассылку или в прочие Developer'ские каналы. C QtWidgets или Electron (конкурент QtQuick) — значительно легче получить помощь;
- Для написании сложной логики нужно будет делать Js или C++ вставки, в случае последнего всё это связывать клеем;
- Не сыскал популярности со всеми вытекающими. Десктопных приложений очень мало. Мобильные приложения тоже пишут больше на родных, а то и Web-костылях. Единственное широкое распространение: KDE Plasma 5, Sailfish и ныне покойные Ubuntu Touch и Unity 8;
- Куча проблем из-за аппаратного ускорения отрисовки. На офисной Win-машинке со слабым GPU и отсутствием поддержки OpenGL 2.0 придётся использовать жуткие костыли в виде ANGLE, иначе просто ничего не будет запускаться. С ноутбуками и встройками от Intel/AMD тоже всё не очень гладко и куча проблем;
- Медленно, жрёт ресурсы CPU и RAM. JavaScript-интерпретатор со всеми вытекающими. Тянет много тяжёлых либ, есть требования от GPU.