The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск qBittorrent 4.4 с поддержкой протокола BitTorrent v2, opennews (??), 07-Янв-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


37. "Выпуск qBittorrent 4.4 с поддержкой протокола BitTorrent v2"  –2 +/
Сообщение от MazikOttogi (ok), 07-Янв-22, 11:37 
Исключительно в плане кода.
-Макросня для классов с Q_OBJECT и аллокация каждого(или гудбай сигналам-слотам, на которых весь юи).
-Целиком и принудительно(!) местные контейнеры да строки и обилие легаси вместо STL, enum class и прочего, даже thread - QThread или ничего.
-Виджет тащит тонну данных, а всё равно требует css styleSheet'ов с обновлением оных.
-Захотел координаты элементов в float-типах - стоит перехотеть. Фреймбуфер и дельту кадра кьют не даст поглядеть.
-OpenGL добавляется костыльным "рабом-виджетом", QPainter очень неспешный.
-Примеры в документации нередко deprecated и "делай простенько как у нас или пиши целый модуль с нашими зависимостями-требованиями", особенно когда нужно чуточку изменить поведение (или не пихать tr("Строка") с зависимостью в каждый файл).
-Функции QtCreator вроде редактирования лэйаутов в форме дизайнера отправляют погулять(хотя IDE неплохая), qmake доставляет шалости и O1 линкеру на релизе.

Порой ощущение, будто скриптизёрство уровня C#-Java с вкраплением С для веселья, Event'ы в духе Object соседствуют с сырыми поинтерами.
   Пусть программы и не тормозят(это всего лишь гуи), предпочёл бы варианты на ИмГуи, чем на этом скрещивании языков.
P.S. В битвах DE не участвую, Xfce или добрых cd-ls хватает на все случаи жизни.

Ответить | Правка | К родителю #8 | Наверх | Cообщить модератору

41. "Выпуск qBittorrent 4.4 с поддержкой протокола BitTorrent v2"  +/
Сообщение от Аноним (-), 07-Янв-22, 11:43 
Какие плюсы имгуи ?
Ответить | Правка | Наверх | Cообщить модератору

49. "Выпуск qBittorrent 4.4 с поддержкой протокола BitTorrent v2"  +/
Сообщение от MazikOttogi (ok), 07-Янв-22, 12:07 
Лаконичность, унифицированность и легковесность.

Помещаешь жалкие несколько файлов-исходников в проект и ты на коне.
Свободное внедрение в цикл приложения несколькими строками без каких-либо навязываний.
Удобнейший и краткий вызов элементов однострочными функциями и редактирование переменных по ссылке.
Настраивается при желании взмахом руки и целиком, богатые возможности с обширным демо и доками-сообществом(см ImDrawList coding party).
Шустр в графических задачах и ложится напрямую вместе с вашим OpenGL\иным, словно самописный.
Теоретически экономнее по памяти и быстрее из-за Immediate Mode парадигмы.

Из минусов только местечковая Сишность и возможные сложности при чётко позиционированных интерфейсах, но это сущие мелочи и легко решаются.

Ответить | Правка | Наверх | Cообщить модератору

94. "Выпуск qBittorrent 4.4 с поддержкой протокола BitTorrent v2"  +/
Сообщение от Аноним (91), 07-Янв-22, 14:23 
И совершенно не подходит для написания прикладных приложений. Из-за необходимости реализовать ввод/вывод самостоятельно. HalfGUI - было бы более честное название.
Сгодится только в игровых движках, где уже есть свои подсистемы для обработки событий и вывода картинки.
Ответить | Правка | Наверх | Cообщить модератору

132. "Выпуск qBittorrent 4.4 с поддержкой протокола BitTorrent v2"  +/
Сообщение от MazikOttogi (ok), 07-Янв-22, 16:46 
В этом и смысл - несколько десятков строк для инита того же Glfw перед while и ничего больше не нужно, да можно писать что угодно и как угодно. Полная прозрачность и свобода.

ИмГуи поставляет минимальные примеры для запуска и связки с бэкендами, а также инкапсулирует свои инпут и отрисовку, хорошо это или избыточно. События и вовсе как часть функций работают. Т.е. ничего дорабатывать для запуска не требуется.

Ответить | Правка | Наверх | Cообщить модератору

269. "Выпуск qBittorrent 4.4 с поддержкой протокола BitTorrent v2"  +/
Сообщение от Аноним (-), 10-Янв-22, 00:42 
Звучит интересно. Спасибо !
Ответить | Правка | Наверх | Cообщить модератору

51. "Выпуск qBittorrent 4.4 с поддержкой протокола BitTorrent v2"  +4 +/
Сообщение от Shaturemail (ok), 07-Янв-22, 12:16 
> и аллокация каждого(или гудбай сигналам-слотам, на которых весь юи).

Чего? Ты имеешь в виду аллокацию на куче? Потому что без создания обьекта в памяти нигде ничего не работает. Но аллокация на куче никак не связана с сигналами-слотами. Тебе главное чтобы обьект жил пока отрисовывается UI. Это так работает С++, с Qt это никак не связано. Если ты хранишь его где-то даже на стеке, то аллокация на куче не обязательна. Даже виджеты из .ui файла можно на стеке создавать, есть настройка в QtCreator.

> Целиком и принудительно(!) местные контейнеры да строки и обилие легаси вместо STL, enum class и прочего, даже thread - QThread или ничего.

Ты можешь STL использовать, но там обьекты не реализуют COW, что нужно для Qt. Но я не вижу проблемы использовать Qt-шные, они более функциональные и удобные.

> Примеры в документации нередко deprecated и "делай простенько как у нас или пиши целый модуль с нашими зависимостями-требованиями", особенно когда нужно чуточку изменить поведение (или не пихать tr("Строка") с зависимостью в каждый файл).

Ни разу не встречал. Поделишься ссылкой?

Остальные претензии как из пальца высосанные, если честно.

> предпочёл бы варианты на ИмГуи, чем на этом скрещивании языков.

ImGui это библиотека для immediate GUI, они медленней чем retained (такие как Qt). immediate используется для игр, где ты и так перерисовываешь каждый кадр. Именно по-этому у нас есть программы для десктопа на Qt и нет на ImGui.

Ответить | Правка | К родителю #37 | Наверх | Cообщить модератору

85. "Выпуск qBittorrent 4.4 с поддержкой протокола BitTorrent v2"  +/
Сообщение от MazikOttogi (ok), 07-Янв-22, 14:07 
Благодарю за часть пояснений, остальное в иной ветке.

А так, QRegExp не поддерживает многострочные выражения, с QChar в QString шалить грустнее, QThread не детачнуть, типизированных пэрэнтов и лэйаутных объектов без своих наворотов не получить, QtLinguist делает лишь однонаправленные переводы и через программку, QJson с рекурсивным обходом вызывает кутерьму array-object-document, кью-алгоритмы желтит с "используйте std", сайзполиси часто игнорируется и так далее.

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

  

Ответить | Правка | Наверх | Cообщить модератору

139. "Выпуск qBittorrent 4.4 с поддержкой протокола BitTorrent v2"  +1 +/
Сообщение от Shatur (ok), 07-Янв-22, 18:30 
Да, я Вас понимаю, мне самому нравится STL использовать. Но, как уже упоминали, Qt давно писался...
Лично я нахожу библиотечные типы Qt достаточно приятными, но это вкусовщина, да. На счет некоторых недостатков хочу дополнить:

> QRegExp не поддерживает многострочные выражения

QRegExp это легаси, вместо него используйте QRegularExpression, который совместимый с Perl и поддерживает многострочные выражения.
А std::regex из стандартной библиотеки это вообще ошибка дизайна, жутко медленный и монструозный. В любой статье про ABI упоминается std::regex, потому что его нельзя починить без слома ABI. Например, вот на хабре была: https://habr.com/ru/post/490222/

> QThread не детачнуть

Если вы про detach() из std::thread, то Вы же можете просто создать его на куче. Мне этот подход больше нравится, таким образом четко видно время жизни потока.

> QtLinguist делает лишь однонаправленные переводы и через программку

Так это везде так, даже с .po файлами.
А если не нравится QtLinguist, то можно синхронизировать репозиторий со специальным сервисом вроде Crowdin (их много таких на самом деле), и он будет подгружать .ts файлы автоматически и пользователи смогут заходить на страничку проекта и прямо там переводить. Как бы веб-морда для .ts файлов, от сервиса прилетают PR в репозиторий. Удобно для простых пользователей которые просто хотят перевести программу. Работает не только для QtLinguist, обычно многие форматы на таких сервисах поддерживаются, те же .po.

> QJson с рекурсивным обходом вызывает кутерьму array-object-document

Потому что в JSON у вас есть три типа: значение, массив и словарь. И вы в рантайме не знаете какой там у элемента, поэтому явно конвертируется.

> кью-алгоритмы желтит с "используйте std"

Конечно, потому что это легаси. Qt5 же поддерживал работу еще с С++03. Просто не нужно использовать. В Qt6 удалили это все, насколько я знаю. И лично мне нравится что они API неспеша ломают.

Ответить | Правка | Наверх | Cообщить модератору

55. "Выпуск qBittorrent 4.4 с поддержкой протокола BitTorrent v2"  +2 +/
Сообщение от Аноним (7), 07-Янв-22, 12:24 
Спасибо за объяснение. Этот список, конечно, не тянет на "Qt игнорирует плюсы", как ты изначально выразился. И все недостатки имеют логичное объяснение. Qt - софт с более чем 20-летней историей. Естественно, там много легаси. В 90-х, напомню, далеко не все STL были хорошего качества и да, было популярно лепить собственные реализации строк и контейнеров, которые имели предсказуемое качество. Ну и иногда фичи, которых нет в STL. Ты же не ожидаешь, что при выходе каждого обновления стандарта С++ весь Qt будут переписывать в соответствии с фишками нового стандарта? Вот и осталось много легаси. Заметь, все недостатки, которые ты перечислил - нефатальные, с ними вполне можно жить. А где же фатальные? Очевидно, разработчики Qt позаботились, чтобы их не было. У них ограниченный ресурс рабочего времени, они не могут исправить вот прямо всё-всё-всё, это относится к любому большому софту. Вот и исправили то, что наиболее важно.
Ответить | Правка | К родителю #37 | Наверх | Cообщить модератору

76. "Выпуск qBittorrent 4.4 с поддержкой протокола BitTorrent v2"  +1 +/
Сообщение от MazikOttogi (ok), 07-Янв-22, 13:41 
Прошу простить, не имел в виду резкого и сильного негатива в сторону Qt или "фатальности недостатков". Остальным комментаторам тоже.

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

Потому предполагаю, что в части приложений скромная прозрачная библиотека для гуи(вроде stb хэдеров) почти без привязок была бы эффективнее, хотя бы для программирования и объёма зависимостей. По аналогии, как писать графический калькулятор на WinForms вместо Unity. Ведь должны быть хоть какие-то альтернативы.

Ответить | Правка | Наверх | Cообщить модератору

185. "Выпуск qBittorrent 4.4 с поддержкой протокола BitTorrent v2"  +/
Сообщение от Аноним (38), 08-Янв-22, 00:14 
Совершенно очевидно, что юнити обладает рядом выраженных и неоспоримых преимуществ, в частности, одним из них является кросплатформенность. Если альтернативы предлагают только завязку на легаси, то место их на помойке.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру