LINUX.ORG.RU

Тем кто не любит Qt.


0

3

Тем, из числа разработчиков, кто не любит Qt просьба в этом треде аргументированно указать его основные (с вашей точки зрения) недостатки, а также средства, которые их не имеют.
Впрочем, любителей Qt это тоже касается.

Вопрос встал в связи с тем, что я еще не совсем программист (2 курс), но сейчас практически все пишу на С++ с использованием Qt (если требуется и оправдано, конечно). Возможно, я упустил из виду другие интересные и удобные средства разработки.

//Лисп не предлагать.

//Модераторам: Уважительная просьба перенести в толксы, если считаете, что в девелопменте этому не место.

★★★

Последнее исправление: unikoid (всего исправлений: 1)
Ответ на: комментарий от Begemoth

>Вообще-то QTableView, что вобщем-то логично.

Приемлемое поведение дает только TreeView. В TableView ты будешь бороться с отрисовкой заголовков (они почему-то все рисуются в состоянии «выбрано»). Дальше копаться мне было просто лень, потому что (см выше) кутешная доксигеновая документация — полное технарское говно в худшем смысле этих слов.

linuxfan
()
Ответ на: комментарий от linuxfan

>1. «Вещь в себе»
Ну так сами же и ответили. Например на embedded платформах. Таким образом это отличный вариант для написания кроссплатформенного кода. Интергация других библиотек в Qt - наверное не самое лучшее решение, а вот интергация других библиотек в проект, который использует Qt - все работает.

2. Qt монструозно.

Используй только то, что тебе необходмимо. Зато когда понадобится что-то еще, то вполне возможно, что это что-то уже есть в Qt и не потребуется тянуть еще одну зависимость.

3. Ограниченность Qt.

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

Вообще есть предложение продолжить этот разговор в личной переписке.
Например тут: qtsoobad на mail.ru

trex6 ★★★★★
()
Ответ на: комментарий от namezys

>Нука, покажи мне по ООП документацию такую

Причем тут ООП? Это общий подход: описывается функция, ее параметры, возвращаемое значение, возможные подводные камни и (внимание!) откуда растут ноги у этой функции (читай: «с какой версии она появилась»). Впрочем, последнее иногда упоминается и в кутешном бреде.

В качестве примера на уме вдруг всплыло слово «MSDN».

linuxfan
()
Ответ на: комментарий от trex6

Фу, какое неуважение к человеку - просить написать на mail.ru

hibou ★★★★★
()
Ответ на: комментарий от jtootf

а я где-то утверждал обратное?

Ну так обсуждаются проблемы Qt? Это само собой разумеющееся, которое можно опустить по умолчанию. :)

Doxygen'овское говно — это бред сивой кобылы, а не документация. И так не один я считаю, кстати. Досадно, что это говно по каким-то причинам прижилось.

Ты определись что-ли, тебе не нравится инструментарий для генерации документации или содержание оной?

zJes ★★
()
Ответ на: комментарий от linuxfan

> В качестве примера на уме вдруг всплыло слово «MSDN».

Открой его еще раз и прочти. Там много разной документации, с разной степенью детализации

А то, что маны есть по десятку функций, это коненчо хорошо. Но

namezys ★★★★
()
Ответ на: комментарий от zJes

>Ты определись что-ли, тебе не нравится инструментарий для генерации документации или содержание оной?

Одно прямое следствие другого. Поясняю: когда-то давным-давно существовало разделение между быдлокодерами и техническими писателями (оно и сейчас никуда не делось, собственно). И в коммерческих библиотеках документация писалась так: быдлокодер в каком-то виде предоставлял описание тезническому писателю, тот переводил этот поток сознания в словестную форму, вытягивал темные и неясные моменты из быдлокодера и красивенько оформлял.

Как это стало с приходом доксигена: поток сознания изливается в комментарии и в итоге сводится к «функция сделатьЧтоТо делает что-то». И далее следует примерно дословный перевод каждого параметра. Лютобешаный п-ц.

А еще в кутешной документации жутко бесит, что не на всех страницах сущности являются ссылками. За конкретным примером лезть лень, но когда функция возвращает enum, а он некликабелен. Мать моя, как я матерился! В gtk такого нет. Там каждый тип в описании функции кликабелен. Раз — и готово.

linuxfan
()
Ответ на: комментарий от linuxfan

А еще в кутешной документации жутко бесит, что не на всех страницах сущности являются ссылками. За конкретным примером лезть лень

Да уж сползай, чего уж там. Покажешь народу что ты не только слюной брызгать умеешь.
Скажу в + документации по Qt, все что нужно, там есть. Лаконично (что есть обалденный плюс для меня, не люблю читать портянки для того чтобы добраться до сути), но есть. Проблем с вниканием в Qt не испытывал.

zJes ★★
()
Ответ на: комментарий от linuxfan

В TableView ты будешь бороться с отрисовкой заголовков (они почему-то все рисуются в состоянии «выбрано»)

Не сталкивался с таким.

Begemoth ★★★★★
()

С++ — помесь «носорога» системного языка программирования с финтифлюшками типа библиотек boost и pthreads.

Возможно, я упустил из виду другие интересные и удобные средства разработки.


Ты упустил JDK и SWT.

iZEN ★★★★★
()
Ответ на: комментарий от zJes

>А еще в кутешной документации жутко бесит, что не на всех страницах сущности являются ссылками

открой для себя быстрый поиск в Assistant или Creator

annulen ★★★★★
()
Ответ на: комментарий от linuxfan

[qoute]В TableView ты будешь бороться с отрисовкой заголовков (они почему-то все рисуются в состоянии «выбрано»). http://ompldr.org/vNjN0ag/table.png - специально для тебя в xfce переключился, ибо в кедах тема стоит, в которой активные заголовки вообще не выделяются.

Kosyak ★★★★
()
Ответ на: комментарий от Kosyak

>*yawing* чего ещё придумаешь?

Список методов посмотри.

linuxfan
()
Ответ на: комментарий от zJes

>Скажу в + документации по Qt, все что нужно, там есть.

Ну для хеллоуворлдов, и впрямь, документация исчерпывающая.

linuxfan
()
Ответ на: комментарий от annulen

>Все там нормально

Мне уже страшно. Либо кругом одни красноглазые с жуткими кастомными темами оформления, либо слепые, либо нихрена не пробовали, но от друзей слышали, что «куте заебца, тролли хорошо зделали».

linuxfan
()
Ответ на: комментарий от Kosyak

Ты разницу между ListView и TableView в принципе способен понять? В ListView должна выделяться строка целиком.

Для самых упертых, упоротых и просто не врубающихся, о чем идет речь: http://s11.radikal.ru/i183/1011/1e/72fb0724d6de.png

linuxfan
()
Ответ на: комментарий от anonymous

> В С++ есть синтезируемый конструктор копирования. Его выкидывание сужает область использования. Для этого есть какие-то основания?

Объекты при создании могут захватывать некоторый ресурс, который не всегда можно скопировать (например мьютекс). Кроме того иногда довольно сложно однозначно определить правильную стратегию копирования (например передача права владения ресурсом при копировании смартпоинтеров). В этих случаях одним из вариантов решения проблемы неправильного использования объекта является запрещение копирования.

m0rph ★★★★★
()

Лично мне в Qt было бы здорово увидеть возможность сборки без бинарной совместимости, но зато с убраным оверхедом на pimpl. Есть множество проектов, для которых важнее скорость работы и экономия ресурсов, чем обновление Qt отдельно от самих программ.

Dendy ★★★★★
()
Ответ на: комментарий от linuxfan

Ну для хеллоуворлдов, и впрямь, документация исчерпывающая.

О да, великий гуру консоли. Если ты не можешь понять элементарного (а по твоим репликам видно, какой из тебя специалист), не значит что остальные тоже не могут.

zJes ★★
()

Главный недостаток (частично свойственный C++ вообще) - сложность отладки. Qt - куча очень нетривиально связанных между собой сущностей. Причём часто они связаны через приватные структуры, что нарушает инкапсуляцию. Концов не найдёшь, короче.

А ещё меня бесит, что он поставляется одним гигантским архивом, не разбитым (и не разбиваемым в принципе по уже упомянутым причинам) на архивы с отдельными либами.

А ещё там ужасный сетевой код, особенно по части FTP.

Ну и метакомпилятор - не сахар. Хотя бы потому, что сильно увеличивает время компиляции.

сейчас практически все пишу на С++ с использованием Qt

Я тоже. Утомляет. Предпочёл бы Python + Gtk. Python идеально подходит для RAD, имеет обширную библиотеку, Gtk, поскольку написано на чистом C, проще состыковывается с другими языками, да и гораздо легче сам по себе.

Divius ★★
()
Ответ на: комментарий от linuxfan

>Мне уже страшно.

А ты не бойся, используй методы QHeaderView

annulen ★★★★★
()
Ответ на: комментарий от linuxfan

>Либо кругом одни красноглазые с жуткими кастомными темами оформления, либо слепые, либо нихрена не пробовали, но от друзей слышали, что «куте заебца, тролли хорошо зделали».

Я между прочим этим «куте» на хлеб с маслом зарабатываю :)

annulen ★★★★★
()
Ответ на: комментарий от Divius

> А ещё там ужасный сетевой код, особенно по части FTP.

Не ужасный, а безальтернативный. :)
FTP да, то что это представляет сейчас, неюзабельно.

Я тоже. Утомляет. Предпочёл бы Python + Gtk.


Тоже по работе испльзую, но предпочитаю PyQt, что собственно и сделал, перенеся проекты, разбив на контролы(с++) и логику(питон). Не люблю С++. :)

zJes ★★
()

>Тем, из числа разработчиков, кто не любит Qt просьба в этом треде аргументированно указать его основные (с вашей точки зрения) недостатки, а также средства, которые их не имеют.


что-то угасает срачь , подбросим дровишек ...

недостатки qt:
1. С++
2. Это внешний проект для сообщества (как mono, java & etc)
3. Несмотря на все свои адские возможности и инструменты, qt таки так и не стал DE образующим тулкитом (кроме как KDE - а это как несчастный случай и как пример бестолкового управления работами и ресурсами).
Альянс Qt с Нокией - это тоже скорее как отрицательный факт.
У Nokia нет нюха на OS , нет положительной истории успеха в этом деле,
и нет явного желания ковыряться в портках linux.
Хотя, у Марка & K есть шансы поотжигать на ниве и Qt еще. Посмотрим.



elipse ★★★
()
Ответ на: комментарий от Begemoth

>Всё нормально

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

linuxfan
()
Ответ на: комментарий от Dendy

>Это правда для вас было так сложно?

Для самых быстро соображающих: мне нужно выделение ВСЕЙ строки. Как это сделано в AddressBook, но мне НЕ НУЖНО, чтобы заголовки таблицы при этом подсвечивались жирным.

Для этого МОЖНО использовать TreeView, но в нем проблемы с отрисовкой при редактировании поля. Уж видео, извини, снимать не буду. Скажу только одно: в gtk GtkTreeModelView работает для многоколоночного списка именно так, как нужно. В gtk-demo есть пример по адресу TreeView -> ListStore.

linuxfan
()
Ответ на: комментарий от zJes

>Если ты не можешь понять элементарного (а по твоим репликам видно, какой из тебя специалист), не значит что остальные тоже не могут.

О да, я вижу, какие тут «спецЫалисты» сбежались: не могут даже различить два различных состояния заголовков таблицы на глаз. Не могут понять, что в ListView ДОЛЖНА выделяться строка целиком. И даже когда выделяется одна ячейка, они упрямо НЕ ВИДЯТ, что заголовок этой ячейки опять-таки подсвечивается.

О том, как отключить жто дебильное поведение в документации ни слова. Почему? Да потому что в четвертой куте документацию писали другие люди, не те, кто заделывал тройку.

linuxfan
()
Ответ на: комментарий от annulen

>Я между прочим этим «куте» на хлеб с маслом зарабатываю :)

Ну да, а такой простой вещи, как multicolumn list view сделать не в состоянии. Хлеб-то, небось, ржаной, а масло подсолнечное? На соль ко всему этому делу хоть хватает?

linuxfan
()
Ответ на: комментарий от elipse

>2. Это внешний проект для сообщества

Это скорее плюс, чем минус.

3. Несмотря на все свои адские возможности и инструменты, qt таки так и не стал DE образующим тулкитом

Это нельзя считать недостатком.

linuxfan
()
Ответ на: комментарий от linuxfan

Ты понимаешь, я только с 3 раза понял что хотел сказать... причем тут одна строка и заголовок в ListView.

Зачем нужен мультиколумн если есть TableView?

zJes ★★
()
Ответ на: комментарий от linuxfan

> Это скорее плюс, чем минус.

Возможно, для одиночек это и плюс.
Однако, последние события в мире СПО указывают на возможные риски от сильно зависимых корпоративных проектов.

Это нельзя считать недостатком.


Это уже факт и как производная отношения других к Qt.

elipse ★★★
()
Ответ на: комментарий от linuxfan

> мне НЕ НУЖНО, чтобы заголовки таблицы при этом подсвечивались жирным

Спасибо за поправку, я плохо сообразил. Тогда решается добавлением одной строчки:

tableView->horizontalHeader()->setHighlightSections(false);

Вот на Motif'е хорошо видно результат: http://img826.imageshack.us/img826/6381/address.png

Dendy ★★★★★
()
Ответ на: комментарий от zJes

>Зачем нужен мультиколумн если есть TableView?

Чтобы отобразить список данных с несколькими полями. TableView показывает несколько иное: просто абстрактные неоднородные данные. И дико фейлит с хидерами, хотя возможность выбора строки или столбца целиком в нем есть.

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

linuxfan
()
Ответ на: комментарий от linuxfan

> TableView показывает несколько иное: просто абстрактные неоднородные данные.

Возможно ты прав, но список по сути частный случай таблицы. При этом ЛистВью поддерживает колонки. Я тут не знаю, с листвью практически не работал.

zJes ★★
()
Ответ на: комментарий от zJes

>При этом ЛистВью поддерживает колонки.

Беглый эксперимент показал, что ListView берет только первую колонку из модели.

linuxfan
()
Ответ на: комментарий от linuxfan

:)Вынудил ты меня залезть в документацию и посмотреть. Да, только один столбец. И не первую, а которую укажешь через setModelColumn.

zJes ★★
()

Очень бесит беспричинное отсутствие нормальной модульности (обещали поправить, но я им не верю), обилие препроцессора (впрочем это беда C++ неспособного к метопрограммированию), отсутствие минимального статического анализа сигналослотов (почему этого не делает moc — не понятно) и Q_OBJECT на котором висит вся магия и все ограничения (например я понимаю, что плохо копировать окно, но не понимаю почему объект умеющий сигналы и слоты уже нельзя копировать). Дико бесит Phonon: зачем он железобетонно привязан к QtGui — не понятно.

KblCb ★★★★★
()
Ответ на: комментарий от antony986

сразу видно, что не читал сорцов кьюта

читал, они меня не смущают; главное - работает

jtootf ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.