QML vs QWidget's, поясните технологию, рисование? что производительнее? |
Здравствуйте, гость ( Вход | Регистрация )
QML vs QWidget's, поясните технологию, рисование? что производительнее? |
I_Wanna_Know |
12.9.2014, 19:47
Сообщение
#1
|
Студент Группа: Участник Сообщений: 20 Регистрация: 28.8.2014 Пользователь №: 4213 Спасибо сказали: 0 раз(а) Репутация: 0 |
Доброго времени суток Комрады!
прошу не пинайте меня - ленивую сволочь за то, что не сильно гуглил эту тему :-) Просто хочется услышать мнение живых людей по сабжу: Собсно сабж в том, что прошёл слушок, мол в Qt5 нужно слезать с QWidget's и переходить на QML т.к. в будущем по заверениям будет развиваться именно QML Поэтому прошу пожалуйста проясните ситуацию:
Вообщем хочется знать нахрена весь этот сыр бор затеян с этим QML , чем их не устраивал QWidget? |
|
|
I_Wanna_Know |
16.9.2014, 21:12
Сообщение
#2
|
Студент Группа: Участник Сообщений: 20 Регистрация: 28.8.2014 Пользователь №: 4213 Спасибо сказали: 0 раз(а) Репутация: 0 |
Неужели никто не знает?!
|
|
|
ahalaj |
16.9.2014, 23:30
Сообщение
#3
|
Студент Группа: Участник Сообщений: 47 Регистрация: 14.6.2014 Пользователь №: 4166 Спасибо сказали: 13 раз(а) Репутация: 1 |
IMHO сравнивать QWidget's и QML так же "лепо", как сравнивать тёплое с мягким или мокрое с высоким, абсолютно несовместимые понятия.
|
|
|
marsel |
17.9.2014, 10:52
Сообщение
#4
|
Студент Группа: Новичок Сообщений: 15 Регистрация: 29.1.2013 Пользователь №: 3693 Спасибо сказали: 3 раз(а) Репутация: 0 |
Собсно сабж в том, что прошёл слушок, мол в Qt5 нужно слезать с QWidget's и переходить на QML т.к. в будущем по заверениям будет развиваться именно QML Ну это в принципе ответ на вопрос о том стоит ли переходить или нет. Когда придёт Qt6 и QML доработают до функционала QWidget's, скорее всего виджеты выкинут. Поэтому QML это неизбежно(если конечно ещё что-нибудь не придумают ). Поэтому лучше не затягивать с изучением. Что из этого производительнее (легковестне) ? По производительности, если конечно не перегружать javascript кодом, должно быть не хуже. Так как элементы в QML это по сути плюсовые объекты от наследованные от класса QQuickItem. Есть ли в QML что то типа QPainter? QGraphicsObject и QGrarphicsScene ? Можно создавать кастомные элементы. Надо в с++ части создать класс отнаследованный от QQuickPaintedItem и переопределить метод paint. Где удобнее рисовать\работать с графическими объектами\элементами? в QML или QWidget На QML конечно удобнее работать с графическими элементами, он для этого и сделан. Что предоставляет больше функционала? то же обнаружение коллизий \ отслеживания изменения координат ну и т.п. Честно не до конца понял, что имеется в виду. Вообще считаете ли вы технолохию QML "сырой"? или наоборот? Да QML (QtQuick 2) ещё конечно молодая технология и всяких бяк хватает. Вообще на сколько удобна связка QML + С++ ? Вообще довольно удобно, потому что получается чёткое разделение бизнес-логика в с++ части, а интерфейс в QML. |
|
|
I_Wanna_Know |
17.9.2014, 12:06
Сообщение
#5
|
Студент Группа: Участник Сообщений: 20 Регистрация: 28.8.2014 Пользователь №: 4213 Спасибо сказали: 0 раз(а) Репутация: 0 |
marsel большое спасибо за развёрнутый ответ
Что предоставляет больше функционала? то же обнаружение коллизий \ отслеживания изменения координат ну и т.п. Честно не до конца понял, что имеется в виду. Я имею в виду методы для работы с графическими примитивами например: скалирование, трансформация( в том числе и Rotate() ) или вот конкретная функция для обнаружения коллизий(столкновений между графическими примитивами) http://www.doc.crossplatform.ru/qt/4.4.3/q...ollidesWithItem Т.е. вот например хочу я написать на C++ классическую игру "жизнь", где нужно отрисовывать большое количество графических объектов движущихся по сложному алгоритму, что мне лучше использовать? QML или QWidgets при условии того, что я хочу хорошую производительность и отсутствие геморроя при написании GUI? |
|
|
marsel |
18.9.2014, 9:25
Сообщение
#6
|
Студент Группа: Новичок Сообщений: 15 Регистрация: 29.1.2013 Пользователь №: 3693 Спасибо сказали: 3 раз(а) Репутация: 0 |
Я имею в виду методы для работы с графическими примитивами например: скалирование, трансформация( в том числе и Rotate() ) или вот конкретная функция для обнаружения коллизий(столкновений между графическими примитивами) http://www.doc.crossplatform.ru/qt/4.4.3/q...ollidesWithItem У Item (базовый тип для всех визуальных элементов в QML), есть методы - scale, rotation, transform. Также имеется целая куча анимаций изменения различных состояний http://qt-project.org/doc/qt-5/qtquick-qmltypereference.html На счёт обнаружения коллизий не знаю, не доводилось применять. Т.е. вот например хочу я написать на C++ классическую игру "жизнь", где нужно отрисовывать большое количество графических объектов движущихся по сложному алгоритму, что мне лучше использовать? QML или QWidgets при условии того, что я хочу хорошую производительность и отсутствие геморроя при написании GUI? Тут я не могу ничего посоветовать, так как сам не писал такие вещи. По идее QML для этого больше приспособлен, но насколько там будет меньше или больше проблем, хз. |
|
|
Litkevich Yuriy |
19.9.2014, 11:10
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
ahalaj |
19.9.2014, 12:06
Сообщение
#8
|
Студент Группа: Участник Сообщений: 47 Регистрация: 14.6.2014 Пользователь №: 4166 Спасибо сказали: 13 раз(а) Репутация: 1 |
|
|
|
I_Wanna_Know |
21.9.2014, 0:34
Сообщение
#9
|
Студент Группа: Участник Сообщений: 20 Регистрация: 28.8.2014 Пользователь №: 4213 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
exio |
31.10.2014, 15:23
Сообщение
#10
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 31.10.2014 Пользователь №: 4265 Спасибо сказали: 0 раз(а) Репутация: 0 |
marsel большое спасибо за развёрнутый ответ Что предоставляет больше функционала? то же обнаружение коллизий \ отслеживания изменения координат ну и т.п. Честно не до конца понял, что имеется в виду. Я имею в виду методы для работы с графическими примитивами например: скалирование, трансформация( в том числе и Rotate() ) или вот конкретная функция для обнаружения коллизий(столкновений между графическими примитивами) http://www.doc.crossplatform.ru/qt/4.4.3/q...ollidesWithItem Т.е. вот например хочу я написать на C++ классическую игру "жизнь", где нужно отрисовывать большое количество графических объектов движущихся по сложному алгоритму, что мне лучше использовать? QML или QWidgets при условии того, что я хочу хорошую производительность и отсутствие геморроя при написании GUI? Я использовал по долгу службы QML в электронном учебнике. По производительности QML скажу так: 1)QML - это прекрасный инструмент для быстрого написания форм любого вида. Каким бы сложным и нестандартным не был дизайн интерфейса, Вы сможете быстро реализовать его при помощи QML. После первичной компиляции QML файла, форма будет работать быстро. 2)В QML удобно реализовывать списки. Вам не нужно писать кучу кода для того, чтобы нарисовать красивые элементы списка. 3)QML не предназначен для работы с большим количеством примитивов. Тысячи item ов это для него большая проблема, т.к. тратится время и на отрисовку и на работу сигнально-слотовой системы. Чтобы вывести для примера тысячу анимированных смайлов, придется использовать сторонний 3д движок и оборачивать его вывод в отдельный Item, тогда все будет ок. 4)среда QML - это не хранилище данных. Если в js запихать большой массив с данными, то все будет жутко тормозить. В среду QML желательно подтягивать только то, что необходимо здесь и сейчас. Опишу одну из реальных проблем, с которой столкнулись. Нужно было сделать кастомную клавиатуру для андроид приложения. Написали все на QML без использования плюсового кода. Как дело дошло до профилирования и поиска узких мест выяснилось, что эта клавиатура кушает 500 мс на первичную загрузку. Писать на с++ свой элемент не захотел. Сделал отложенную загрузку клавы, чтобы сэкономить пол секунды на первичную загрузку приложения. |
|
|
Текстовая версия | Сейчас: 29.11.2024, 3:10 |