2009-09-02 16 views
10

Niedawno zaczął patrząc na Qt (zainstalowane Qt 4.5.2 I i zainstalowaniu ich Eclipse CDT plugin o nazwie "qt integracji v1.5.2" i zrobię wszystko moje rozwoju w Linux-Eclipse CDT-QTintegration).Czy Qt jest klasyfikowany jako biblioteka C++? Jeśli nie jest to biblioteka, jak klasyfikowałbyś QT?

Początkowo myślałem, że Qt jest prostą biblioteką waniliową C++, ale po zainstalowaniu i uruchomieniu kodu przykładowego Qt zobaczyłem wiele "dziwnych" rzeczy, które uważam za niestandardowe.

Moim celem jest, aby zrozumieć na wysokim poziomie abstrakcji:

  • Czy Qt sklasyfikowane jako biblioteka C++?
  • Jeśli nie biblioteka, jak można klasyfikować Qt (analogia/metafory są doceniane)?

Odpowiedz

30

Qt to ramy, a nie biblioteki. To nie jest trudne i szybkie rozróżnienie wymuszone przez język programowania, ale raczej opisuje, w jaki sposób kod jest przeznaczony i ma być używany:

A biblioteka to czyjś kod, który jest używany przez twój kod . Korzystanie z biblioteki oznacza, że ​​aplikacja pozostaje taka, jaką jest, a po prostu ma inną bibliotekę, która może jej pomóc.

A framework to czyjś kod, do którego wpisuje się twój kod. Korzystanie z frameworka oznacza, że ​​framework definiuje strukturę twojej aplikacji.

Jeśli używasz ramy, trzeba nauczyć konwencje te ramy, która może być nieco inny niż język bazowej; w przeciwnym razie możesz spędzić wiele czasu walcząc z frameworkiem, a stracisz część tego, co ma do zaoferowania.

Qt w szczególności nie wygląda prosto waniliowym C++, ponieważ nie jest prosto wanilia C++. Dodaje (ograniczone) rozszerzenia do systemu obiektowego C++, aby umożliwić takie funkcje jak sygnały i gniazda; rozszerzenia te są implementowane za pomocą mechanizmu Qt, który działa jako preprocesor C++. Aby uzyskać więcej informacji na temat rozszerzeń QT do C++:

+0

Brak QT nie jest ramą. Nie ma odwrócenia przepływu sterowania innego niż typowa obsługa zdarzeń GUI. QT jest rozszerzającą biblioteką językową. – Lothar

+1

IoC nie jest wymogiem dla frameworków! – MFH

3

Qt to zestaw bibliotek C++ wraz z preprocesorem i częścią systemu kompilacji.

+0

+1 także można uznać za „platforma rozwoju”, dzięki czemu można zbudować całą aplikację z bibliotek Qt zapewnia. – Shaun

2

Większość ram GUI/biblioteki dodać do języka, tylko dlatego, że C++ nie ma (lub nie do niedawna) natywnie obsługują wydarzenia, których potrzebujesz dla gui.

Qt postanawia zrobić to z rozszerzeniem na język i prekompilatorem, MFC i wxWidget robią to za pomocą c makr i c-preprocesora. Podejście Qt oznacza, że ​​może zrobić więcej (nie jest ograniczone przez język makr cpp) kosztem nieco bardziej skomplikowanego środowiska kompilacji.

Powiązane problemy