Re[15]: Библиотека для создания графических интерфейсов польз
От: SaZ  
Дата: 18.09.17 08:59
Оценка: +1
Здравствуйте, c-smile, Вы писали:

CS>...


CS>У каждого QObject есть еще QObjectData. Т.е. дополнительная косвенность обращений.

Ну надо понимать, что это небольшие накладные расходы. И object data нужен больше для аккуратного кода. Да и вообще в Qt очень любят pimpl делать (изначально для бинарной совместимости).

CS>А каждый QPointer содержит в себе QWeakPointer который уже есть refcounter штука

Ну так надо понимать, что такое QPointer — это умный указатель, который автоматически зануляется, если уничтожить объект (который обязательно QObject) в другом месте. Я почему-то изначально думал, что это реализовано на сигналах/слотах, но через weak pointer действительно эффективнее.
По сути это и есть QWeakPoniter, для конструирования которого не нужно иметь экземпляр QSharedPointer.
Так что в этом случае использование подсчёта ссылок — общепринятый подход.

CS>В то же самое время HTML DOM это direct parent-child tree:

  Скрытый текст
CS>
CS>class node : refcounted_resource {
CS>  element* parent;
CS>  uint     index; // in parent children collection
CS>}

CS>class element: node {
CS>  vector<handle<node>> children;
CS>}
CS>

CS>Т.е. построено на прямых pointers — более легковесное.

Повторюсь — использование QObject-а само по себе достаточно накладно при больших вычислениях. Например — делать каждый элемент графической сцены (типа entity в любом абстрактном игровом движке) нет смысла. Да и вообще нужно понимать, когда QObject нужен, а когда нет. QObject дорогой при создании, не копируемый по определению, но не имеет практически никакого оверхеда при использовании. Т.е. он является отличной базой для описания GUI объектов (их часто создавать не надо) — тут и обработка событий и сигналы/слоты (аля делегаты).

Поэтому лично я не вижу никакого плюса от заявленной вами легковесности для GUI.

-----
Вообще, если закрыть глаза на личностные выпады, то достаточно интересно читать этот топик. Получается классический холивар на тему Qt vs остальные. Кратко опишу своё мнение и свой опыт:
Я делал на Qt сервера (fastcgi, базы), делал достаточно сложный GUI (ланчеры для всяких игр с сильной кастомизацией, чаты, 3д редактор игровых уровней). wxWidgets — видел исключительно на уровне hello world. О sciter узнал только недавно, не щупал.

Теперь мнение: Qt однозначно лучше для коммерческих и долгосрочных проектов, где сложность превышает пару окон и нужно делать кастомные контролы. Причины очень простые — отличная документация практически по всем фичам, с примерами. Плюс — огромное комьюнити, практически на всё можно найти ответы на SO. И достаточно понятные исходники.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.