crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> 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 вообще обстоит дело с 2D графикой? и обстоит ли оно там вообще ?
    • Есть ли в QML что то типа QPainter? QGraphicsObject и QGrarphicsScene ?
    • Где удобнее рисовать\работать с графическими объектами\элементами? в QML или QWidget
    • Что предоставляет больше функционала? то же обнаружение коллизий \ отслеживания изменения координат ну и т.п.
  • Вообще считаете ли вы технолохию QML "сырой"? или наоборот?
  • Вообще на сколько удобна связка QML + С++ ?



Вообщем хочется знать нахрена весь этот сыр бор затеян с этим QML , чем их не устраивал QWidget?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
I_Wanna_Know
  опции профиля:
сообщение 17.9.2014, 12:06
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 28.8.2014
Пользователь №: 4213

Спасибо сказали: 0 раз(а)




Репутация:   0  


marsel большое спасибо за развёрнутый ответ :clapping:

Цитата(marsel @ 17.9.2014, 11:52) *
Цитата(I_Wanna_Know @ 12.9.2014, 20:47) *
Что предоставляет больше функционала? то же обнаружение коллизий \ отслеживания изменения координат ну и т.п.

Честно не до конца понял, что имеется в виду.

Я имею в виду методы для работы с графическими примитивами например: скалирование, трансформация( в том числе и Rotate() )
или вот конкретная функция для обнаружения коллизий(столкновений между графическими примитивами) http://www.doc.crossplatform.ru/qt/4.4.3/q...ollidesWithItem

Т.е. вот например хочу я написать на C++ классическую игру "жизнь", где нужно отрисовывать большое количество графических объектов движущихся по сложному алгоритму, что мне лучше использовать? QML или QWidgets при условии того, что я хочу хорошую производительность и отсутствие геморроя при написании GUI?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
exio
  опции профиля:
сообщение 31.10.2014, 15:23
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 31.10.2014
Пользователь №: 4265

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(I_Wanna_Know @ 17.9.2014, 13:06) *
marsel большое спасибо за развёрнутый ответ :clapping:

Цитата(marsel @ 17.9.2014, 11:52) *
Цитата(I_Wanna_Know @ 12.9.2014, 20:47) *
Что предоставляет больше функционала? то же обнаружение коллизий \ отслеживания изменения координат ну и т.п.

Честно не до конца понял, что имеется в виду.

Я имею в виду методы для работы с графическими примитивами например: скалирование, трансформация( в том числе и 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 мс на первичную загрузку.
Писать на с++ свой элемент не захотел. Сделал отложенную загрузку клавы, чтобы сэкономить пол секунды на первичную загрузку приложения.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.11.2024, 18:00