Каковы опасные углы Qt? [закрыто]

10

Нет ничего идеального под солнцем. Qt не является исключением, и у него есть ограничения: мы не можем использовать растровые изображения в потоке, отличном от GUI, мы не можем использовать QImage с форматом изображения 16 бит на канал и т. Д.

Какие ситуации заставили вас испортить дизайн из-за ограничений Qt?
Какие самые ненавистные причуды?
Каких дизайнерских решений следует избегать при использовании Qt в своих проектах?

лозы
источник
Можете ли вы сказать , в Qt? Если развернуть его в «Q Toolkit», вы можете добавить «к» перед ним, но это исправить / передовую практику , чтобы сказать в Qt? Просто любопытно.
Anto
@Anto: Полагаю, theчто cornersздесь, конечно , нет Qt, но это только мое интуитивное чувство, так как я русский :)
лозы
Одна из возможных опасных кривых заключается в том, что у проекта могут быть финансовые проблемы. Nokia недавно подписала соглашение с Microsoft (использовать Win7 на своих телефонах), которое ставит будущее Qt в шаткое положение.
Питер Роуэлл
мне очень интересно знать этот ответ, потому что я новичок в визуальном программировании на C ++: D
Shaheer
@ Vines: Как насчет «Какие опасные уголки QT?»?
Крис

Ответы:

12

Как ни странно, я бы сказал, что сила Qt также является одним из недостатков. Существует так много мощных конструкций и расширений, что код, который вы пишете в Qt, легко укореняется в «Qt way». Попытка извлечь функциональность на другой язык не только означает переписывание, вам нужно знать много специфичных для Qt технологий.

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

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

Джеймс Криси
источник
2
Порт Qt3 to Qt4 был трудным для большинства людей, которых я знаю. Этот QML и подобные вещи, которые были введены в более новых версиях, вызывают у меня беспокойство, так как это может означать еще раз усложнение порта.
Вит Пи
10

Qt не использует стандартную библиотеку C ++ , но имеет собственную QString, QVector, QMap, ...

Это означает, что вы должны принять важное дизайнерское решение: какие части приложения будут использовать QString, а какие - std :: string?

Использование std :: string в некоторых частях и QString в других частях означает, что вам придется конвертировать между QString и std :: string в базах данных.

Чтобы избежать этих накладных расходов, можно использовать QString во всем приложении. Но это усложняет использование сторонних библиотек, не основанных на Qt, например boost.

(Обратите внимание, что то же самое относится к std :: map против QMap, std :: vector против QVector и т. Д.)

Решение о том, какие части используют типы Qt, а какие используют STL, является важным конструктивным решением, имеющим серьезные последствия. И только потому, что Qt отказывается использовать стандартную библиотеку C ++.

ИМХО, это решение может пойти в любую сторону, в зависимости от проекта. Поэтому я не могу ответить на ваш вопрос, какой из них следует избегать.

Сьерд
источник
1
Я согласен, но я бы вышел на край и сказал, что QString (и т. Д.) Также является одной из сильных сторон, так как с ними так приятно работать.
Йохан
1
Также не так сложно использовать библиотеку, которая не использует QString. Существует простой метод для преобразования QString в std :: string и наоборот. Не так много для этого.
@ Гленн Нельсон: Да, в настоящее время есть функции преобразования для QString; очень полезно и удобно! Но особенно для QVector и QMap будет много времени при конвертации (а простые решения не сработают, например, для QVector <QString>); Эти издержки следует учитывать при проектировании, чтобы избежать проблем с производительностью в будущем.
Sjoerd
3

Это не дает прямого ответа на вопрос, но я думаю, что стоит упомянуть: возможно, самый «опасный» аспект Qt - это то, что Nokia оказалась в постели с MSoft ...

Вектор
источник
2
Но они отказались от Qt, чтобы сделать это.
Мартин Беккет
1
Для полноты картины - коммерческая часть Qt теперь принадлежит Digia, тогда как Qt перешла на систему «открытого управления», где другие могут легко внести свой вклад. Существует также фонд KDE Free Qt, который защищает Qt от использования закрытых источников.
Вишеш Ханда
2

Недавно я обнаружил, что QChar, несмотря на свое имя, на самом деле соответствует не одному символу, а единице кода UTF-16. Таким образом, когда вы хотите сканировать произвольный текстовый символ Unicode за символом, вы должны добавить алгоритмы для работы с высокими и низкими суррогатами, комбинирования символов и тому подобного.

Себастьян Неграсус
источник