Domanda

Ho già scritto un programma C ++ e mi piacerebbe scrivere un GUI per esso. Mi rendo conto che Qt è uno strumento meraviglioso, tuttavia, Qt ha il proprio classi, che mi rendono abbastanza confuso. ad esempio: invece di stringa, Qt ha una classe denominata QString ..

Mi chiedo se posso mescolare codice C ++ e il codice Qt in C ++?

È stato utile?

Soluzione

Sì, è possibile intermix Qt e STL molto facilmente.

L'interfaccia grafica si QStrings ma silenziosamente creare queste forme std::string o char*, QStrings tornato da Qt può essere convertito con toStdString() o toAscii().

Qt include un insieme di classi di raccolta, ma non c'è bisogno di usarli.

Qt fa un buon lavoro di guardare come moderna C ++, ci sono un paio di 'extra' per gestire il meccanismo del segnale e l'evento di slot, ma questi sono più una complicazione per l'ambiente di generazione rispetto al codice.

modifica: disegno di legge grazie

Altri suggerimenti

I wont consiglio miscelazione std codice C ++ e il codice Qt insieme.

Diciamo, il codice C ++ è la logica allora il codice Qt, dovrebbe essere solo per la GUI. Utilizzando un pattern MVC / MVP o allo stesso modo, separare la logica e interfaccia utente.

In questo modo, sarebbe più facile in futuro essere in grado di eseguire il codice con / senza l'utilizzo di un'interfaccia utente.

In breve, si è possibile! per esempio, una QString è essenzialmente una stringa e ha un metodo di ToASCII (), in modo da poter facilmente utilizzare Qt per i vostri progetti. Anche se si potrebbe incorrere in alcuni problemi di integrazione Qt in Visual Studio (supponendo che lo si utilizza), si sarà in grado di mescolare il codice C ++ e il codice Qt (che è in C ++)

yeah! Qt è qualcosa che si può usare nel codice C ++. Qt è principalmente per GUI, ma è buono per le classi Socket, contenitori, di rete, ... Siete liberi di usare STL e le altre classi normali o quelli Qt vi offre. Il più grande punto è che se si usa Qt nel codice prima che la principale Compilare si dovrebbe fare una meta di compilazione per renderlo pronto per voi compilatore. Una cosa che si dovrebbe notare è che Qt non è standard significa anche se supporta Windows, Linux e Mac OS, non sarà utilizzabile su altre piattaforme.

Possono essere usati insieme.

C ++ ha una lunga storia e l'implementazione STL e il supporto si sono evoluti con la lingua. Penso che la squadra ex-Trolltech deciso che non avevano abbastanza controllo sulla qualità e la disponibilità delle implementazioni STL per rendere la libreria Qt dipendono da questo. Il risultato è che Qt ha una propria QTL, intestazione QtAlgorithms e QString.

Si sono presi cura di renderli compatibili con l'STL:

  • maggior parte dei contenitori hanno un'interfaccia simile a quelli STL (es: accesso iteratore, push_back (), vuoto (), etc)
  • contenitori Qt possono essere convertiti in / da contenitori STL (es: QVector :: toStdVector, QList :: fromStdList)
  • contenitori Qt possono essere utilizzati con algoritmi STL
  • QString può essere convertito da / std :: string e std :: wstring con toStd (W) Corda / fromStd (W) Corda

Personalmente, mi piace QString più di std :: string, è più facile da usare e più potente.

Sì, è possibile.

In realtà ho fatto un Qt-GUI-wrapper per una serie di funzioni basate C. Nessun problema con l'integrazione Qt, solo il basso livello C (che le perdite di memoria ...).

Vedi qui: http://code.google.com/p/qhocr/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top