2009-09-02 3 views
10

Recentemente ho iniziato a esaminare Qt (ho installato Qt 4.5.2 e installato il loro plugin Eclipse-CDT chiamato "qt integration v1.5.2" e farò tutto il mio sviluppo in Linux-Eclipse-CDT-QTintegration).Qt è classificato come libreria C++? Se non una biblioteca, come classificheresti il ​​QT?

Inizialmente pensavo che Qt fosse una semplice libreria C++ vanilla, ma quando ho installato e avviato il codice di esempio Qt ho visto molte cose "strane" che considero non standard.

Il mio obiettivo è quello di capire a un alto livello di astrazione:

  • Viene Qt classificato come libreria C++?
  • Se non una libreria, come classifichereste Qt (l'analogia/metafore sono apprezzate)?

risposta

30

Qt è un framework, non una libreria. Questa non è una distinzione hard-and-fast applicata dal linguaggio di programmazione, piuttosto descrive come il codice è progettato e destinato a essere utilizzato:

A libreria è il codice di qualcun altro che viene utilizzato dal codice . L'uso di una libreria significa che la tua applicazione rimane così com'è, ha solo un'altra libreria per aiutarla.

A quadro è il codice di qualcun altro in cui il codice si adatta. L'utilizzo di un framework significa che il framework definisce la struttura della tua applicazione.

Se si utilizza un framework, è necessario conoscere le convenzioni del framework, che potrebbero essere leggermente diverse rispetto al linguaggio di base; altrimenti, puoi passare molto tempo a combattere il quadro e ti perderai parte di ciò che ha da offrire.

Qt in particolare non sembra un semplice C++ vanigliato perché non è lineare in C++. Aggiunge (limitate) estensioni al sistema di oggetti di C++ per consentire funzionalità come segnali e slot; queste estensioni sono implementate usando Qt's moc, che agisce come un preprocessore C++. Per ulteriori informazioni sulle estensioni di Qt per C++:

+0

Nessun QT non è un framework. Non c'è inversione del flusso di controllo diversa dalla gestione tipica degli eventi della GUI. QT è una libreria di estensione della lingua. – Lothar

+1

IoC NON è un requisito per i framework! – MFH

3

Qt è un set di librerie C++ con un preprocessore e parte di un sistema di compilazione.

+0

+1 Può anche essere considerata una "piattaforma di sviluppo", nel senso che è possibile creare l'intera app dalle librerie fornite da Qt. – Shaun

2

maggior parte dei quadri GUI/librerie aggiungere al linguaggio, proprio perché C++ non lo fa (o non ha fatto fino a poco tempo) supporta in modo nativo il tipo di eventi necessari per una GUI.

Qt sceglie di eseguire questa operazione con le estensioni del linguaggio e un pre-compilatore, MFC e wxWidgets lo fanno con i macro c e il preprocessore c. L'approccio Qt significa che può fare di più (non è limitato dal linguaggio macro cpp) a spese di un ambiente di build leggermente più complicato.