2010-08-19 19 views
6

Una grande quantità di funzionalità è duplicata tra standard C++ e Qt. Ad un certo punto sembra logico, ma molte volte sembra sciocco. Come se avessi voglia di fare un nuovo linguaggio di programmazione, di imparare cose che già conosco. per esempio. usando QFile.Qt: classi Qt vs. standard C++

Anche se faccio tutto in modo Qt e suppongo che ora voglio uscire dal framework Qt sarà troppo noioso per riscrivere quel codice. OTOH Mi piace Qt perché mi fornisce librerie che altrimenti avrei bisogno di pescare me stesso come webkit, connettività di database, dbus ecc.

Che cosa suggerisci di mixare C++ standard o farlo puro Qt way?

+0

Domanda leggermente correlata: http://stackoverflow.com/questions/1668259/stl-or-qt-containers –

risposta

5

Poiché non c'è una GUI in C++, è necessario astrarre il codice GUI dal resto del codice reale.

Quindi, all'interno dell'implementazione QT della propria astrazione della GUI, è possibile utilizzare il codice QT.
Sarà inoltre possibile scrivere l'astrazione della GUI Wx/Quartz senza influire sul codice reale.

Nel codice reale (se il lavoro è stato eseguito) attenersi a materiale standard (o librerie multipiattaforma che sono quasi standard (boost)). Si potrebbe sostenere che il QT sia multipiattaforma. Ricorda che l'uso di una lib qui accoppierà strettamente il tuo codice alla lib, quindi l'estrazione di quest'ultima data non sarà banale. (vedi la precedente domanda sulla rimozione di Rouge Wave da un'applicazione legacy)

3

Faccio tutte le classi di raccolta in std :: è più chiaro per gli sviluppatori non Qt e più portabile.

Stringhe e stringhe Utilizzo le Qt all'interno di una funzione puramente Qt che sta facendo qualcosa di GUI-ish ma altrimenti usa std :: String. Anche se la formattazione Qt .arg() è molto più bella di stringstream

+0

I contenitori forniti con Qt hanno un'impronta più leggera dal momento che sfruttare [condivisione implicita] (http://doc.qt.nokia.com/4.6/implicit-sharing.html), inoltre forniscono [iteratori in stile Java] (http://doc.qt.nokia.com/4.6 /containers.html#java-style-iterators). Quindi consiglierei di usarli al posto di quelli STL. –

+0

c'è boost :: format che fornisce anche un buon modo di produrre. – rriemann