Software frameworks have these distinguishing features that separate them from libraries or normal user applications:
1. inversion of control — In a framework, unlike in libraries or normal user applications, the overall program's flow of control is not dictated by the caller, but by the framework.[1]
2. default behavior — A framework has a default behavior. This default behavior must actually be some useful behavior and not a series of no-ops.
3. extensibility — A framework can be extended by the user usually by selective overriding or specialized by user code providing specific functionality.
4. non-modifiable framework code — The framework code, in general, is not allowed to be modified. Users can extend the framework, but not modify its code.
Ключевым является пункт 1. Фреймворк в том или ином масштабе навязывает свои механизмы и свои архитектурные решения. Например, в случае с Qt вы как минимум начинете наследоваться от QObject и пользоваться сигналами/слотами. В случае с Cocoa вы наверняка начнете писать наследников NSObject и пользоваться всякими NSArray, вместо std::vector и так далее.
В случае с либами, тенденции строить весь проект по ее примеру не наблюдается. Либу можно выкинуть и поменять на другую. Фреймворк без тотального переписывания не выкинуть, обычно он раз и навсегда.
Кодёнок wrote:
> В случае с либами, тенденции строить весь проект по ее примеру не > наблюдается. Либу можно выкинуть и поменять на другую. Фреймворк без > тотального переписывания не выкинуть, обычно он раз и навсегда.
ОК, я вообще пытался намекнуть, что вообще-то других GUI библиотек
и не особенно бывает. QT тут ничем от других подобных "рамкоработ"
не отличается. Так что не думаю, что это "может немного помешать ЭТОМУ",
хотя я и не очень ЭТОГО хотел бы.
Здравствуйте, alexey_sz, Вы писали:
_>Здравствуйте, MasterZiv, Вы писали:
MZ>>В разных случаях для написания GUI на С++ используют разные библиотеки. _>А что еще распространено помимо MFC, Qt , Gtk ?
Основной плюс Qt то, что за ним стоит мега монстр — Nokia. В отличии от wxWidgets поддрежка гиганта позволяет Qt захватывать рынок, т.к. есть доверие, что продукт будут развивать, поддерживать, а не превратится в очередной Nemerle. Сейчас уже очень многие под Qt сидят.
Здравствуйте, shrecher, Вы писали:
S>Здравствуйте, alexey_sz, Вы писали:
_>>Здравствуйте, MasterZiv, Вы писали:
MZ>>>В разных случаях для написания GUI на С++ используют разные библиотеки. _>>А что еще распространено помимо MFC, Qt , Gtk ?
S>Основной плюс Qt то, что за ним стоит мега монстр — Nokia. В отличии от wxWidgets поддрежка гиганта позволяет Qt захватывать рынок, т.к. есть доверие, что продукт будут развивать, поддерживать, а не превратится в очередной Nemerle. Сейчас уже очень многие под Qt сидят. http://blog.qt.nokia.com/2011/02/12/nokia-new-strategic-direction-what-is-the-future-for-qt/
Здравствуйте, agronom25, Вы писали:
A>Стоит ли тратить время на изучение Qt (для повышения своих карьерных перспектив)? Насколько я A>понимаю Qt сейчас является стандартом де-факто при написании графики на C++. С другой стороны будущая востребованность данной технологии вызывает сомнения из-за довольно приличной стоимости лицензий на разработку для коммерческих предприятий и небольшое число вакансий для QT.
Nokia перелицензировала Qt под LGPL. Так что если техподдержка не нужна, можно использовать ее совершенно бесплатно, в т.ч. в коммерческих приложениях. Единственное ограничение: линковаться с Qt надо динамически, а не статически, ну и правильные слова в своей документации написать.
Здравствуйте, Pzz, Вы писали:
Pzz>Единственное ограничение: линковаться с Qt надо динамически, а не статически, ну и правильные слова в своей документации написать.
ню-ню. попробуй напиши серьёзную программу, не позаимствовав в своих классах код из стандартных
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, BulatZiganshin, Вы писали:
Pzz>>Единственное ограничение: линковаться с Qt надо динамически, а не статически, ну и правильные слова в своей документации написать. BZ>ню-ню. попробуй напиши серьёзную программу, не позаимствовав в своих классах код из стандартных
Ээээ... А вы делаете cut&paste из библиотечного кода?!?
Если что, для заголовков, наследования и шаблонов в LGPL предусмотрены исключения.
Здравствуйте, Cyberax, Вы писали:
BZ>>ню-ню. попробуй напиши серьёзную программу, не позаимствовав в своих классах код из стандартных C>Ээээ... А вы делаете cut&paste из библиотечного кода?!?
а по-твоему ООП автоматически решает все проблемы переиспользования? например, делаю d&d: стандартный хендлер всем хорош, но пару вещей для меня делает неправильно. вот и выбирай — либо переписывать нужные мне фичи с нуля, либо копировать и править код из qt, либо чего-то лишаться
Здравствуйте, BulatZiganshin, Вы писали:
BZ>>>ню-ню. попробуй напиши серьёзную программу, не позаимствовав в своих классах код из стандартных C>>Ээээ... А вы делаете cut&paste из библиотечного кода?!? BZ>а по-твоему ООП автоматически решает все проблемы переиспользования? например, делаю d&d: стандартный хендлер всем хорош, но пару вещей для меня делает неправильно. вот и выбирай — либо переписывать нужные мне фичи с нуля, либо копировать и править код из qt, либо чего-то лишаться
Ну свой напиши, тогда.
Здравствуйте, BulatZiganshin, Вы писали:
BZ>>>ню-ню. попробуй напиши серьёзную программу, не позаимствовав в своих классах код из стандартных C>>Ээээ... А вы делаете cut&paste из библиотечного кода?!? BZ>а по-твоему ООП автоматически решает все проблемы переиспользования? например, делаю d&d: стандартный хендлер всем хорош, но пару вещей для меня делает неправильно. вот и выбирай — либо переписывать нужные мне фичи с нуля, либо копировать и править код из qt, либо чего-то лишаться
Или как вариант — выносишь изменения в отдельную DLL и публикуешь её исходники под LGPL, всё как полагается.