Qt классифицируется как библиотека С++? Если бы не библиотека, как бы вы классифицировали QT?

Недавно я начал изучать Qt (я установил Qt 4.5.2 и установил плагин Eclipse-CDT под названием "qt integration v1.5.2", и я сделаю все свое развитие в Linux-Eclipse-CDT-QTintegration).

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

Моя цель - понять на высоком уровне абстракции:

  • Является ли Qt классифицированным как библиотека С++?
  • Если не библиотека, как бы вы классифицировали Qt (оцениваются аналогия/метафоры)?

Ответ 1

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

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

A framework - это код другого пользователя, в который входит ваш код. Использование фреймворка означает, что структура определяет структуру вашего приложения.

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

Qt, в частности, не похож на прямой ваниль С++, потому что он не является прямым ванильным С++. Он добавляет (ограниченные) расширения к объектной системе С++, чтобы разрешать такие функции, как сигналы и слоты; эти расширения реализуются с использованием Qt moc, который действует как препроцессор С++. Для получения дополнительной информации о расширениях Qt для С++:

Ответ 2

Qt - это набор библиотек С++, а также препроцессор и часть системы сборки.

Ответ 3

Большинство фреймворков/библиотек gui добавляют к языку только потому, что С++ не (или не до недавнего времени) поддерживал типы событий, которые вам нужны для gui.

Qt выбирает это с расширением языка и предварительного компилятора, MFC и wxWidgets делают это с помощью макросов c и c-препроцессора. Подход Qt означает, что он может делать больше (это не ограничивается языком макросов cpp) за счет немного более сложной среды сборки.