2009-08-09 10 views
26

Sono interessato ad imparare Qt. Sono abbastanza bravo con C++, STL e Boost. Mi piace molto lo stile STL/Boost, e li uso con C++ ogni volta che posso nei progetti uni. Tuttavia, mi manca sempre la GUI. Sembra che Qt sia la soluzione migliore nel mio caso. Qt ha una buona collezione di contenitori, ma ho molta familiarità con le cose STL/Boost.Qt funziona bene con STL e Boost?

Di cosa dovrei occuparmi quando apprendo Qt e usandolo parallelamente con STL/Boost?

risposta

32

Sì, Qt funziona perfettamente sia con Boost che con STL. La maggior parte delle funzionalità STL è duplicata in Qt per garantire che tali funzionalità siano supportate su tutte le piattaforme che supportano Qt. Tuttavia, nulla vieta di utilizzare le controparti STL/boost dei costrutti Qt o delle funzionalità in esso contenute che manca a Qt.

Sebbene Qt disponga di propri oggetti stringa, contenitore e algoritmo, contiene anche una grande quantità di funzioni per la compatibilità con STL. Ad esempio, una QString può essere convertita in una stringa std :: e un QVector può essere usato con std :: for_each. Qt contiene anche alcune funzionalità che si sovrappongono con boost come QPointer (confronta/contrasto con std: auto_ptr e boost: shared_ptr).

L'articolo Creating Custom Qt Types può fornire informazioni sull'utilizzo di funzioni avanzate con oggetti boost come transmitting custom objects between threads with queued connections.

Consulta anche:

11

Qt non funzionare abbastanza bene al fianco di STL, anche se come qualsiasi quadro hanno dovuto sostituire alcune strutture STL per necessità (la solo uno che ti ritrovi obbligato a usare è string/unicode). Tutto da Boost funziona alla grande - in effetti è un ottimo paio di toolkit da usare insieme, ma dovrai fare attenzione con boost :: signal, dato che Qt ha anche un'implementazione dei segnali e i nomi possono sovrapporsi. Boost copre questo in un FAQ e ci sono alcune informazioni sul sito trolltech come pure per evitare il problema.

+2

La documentazione Qt risolve anche il problema di segnale/slot qui: http://doc.trolltech.com/4.5/signalsandslots.html#using-qt-with-3rd-party-signals-and-slots –