c++ vivere Integrazione di Qt in applicazioni MFC legacy




vivere con la sindrome del qt lungo (4)

Ho guidato una squadra a fare questo genere di cose prima (non da MFC a QT ma i principi dovrebbero funzionare).

Per prima cosa abbiamo documentato i dialoghi e quali erano i loro input, controlli e output. Inoltre, creiamo diversi casi di test soprattutto per qualsiasi logica intelligente all'interno della GUI.

A volte dovevamo rifattorizzare alcune logiche di business per fornire un'interfaccia pulita alle GUI, ma questo è il modo in cui avrebbe dovuto essere fatto in primo luogo da tbh.

Ora avevamo una lista di GUI, input, output, test e un'interfaccia che la GUI incapsulata doveva corrispondere.

Abbiamo iniziato, progetto per progetto, per creare GUI equivalenti a quelle precedenti. Una volta fatto ciò, abbiamo potuto inserire la GUI in quella che era la vecchia, ricostruirla e testarla. All'inizio abbiamo inciampato molto, ma presto abbiamo risolto gli errori comuni e sistemati. Abbiamo navigato (credo) 612 dialoghi anche se c'era una squadra di circa una dozzina di noi che ci lavorava.

Al momento manteniamo una richiesta di applicazioni MFC che sono abbastanza ben progettate, tuttavia l'interfaccia utente sta iniziando a sembrare stanca e gran parte del codice necessita di un po 'di refactoring per riordinare alcuni problemi di duplicazione e / o prestazioni. Facciamo uso di alcuni controlli personalizzati che gestiscono tutti i propri disegni (tutti scritti usando MFC).

Recentemente ho fatto più ricerche su Qt e sui vantaggi che offre (multipiattaforma e supporta quello che potreste definire un framework più "professionale" per lo sviluppo dell'interfaccia utente).

La mia domanda è: quale sarebbe l'approccio migliore per passare al framework Qt ? Qt gioca bene con MFC? Sarebbe meglio iniziare a trasferire alcuni dei nostri controlli personalizzati su Qt e gradualmente integrarli sempre di più nelle nostre app MFC esistenti? (È possibile?).

Qualsiasi consiglio o esperienza precedente è apprezzato.


È un problema complicato e sospetto che la risposta dipenda da quanto tempo hai. Otterrai un risultato molto migliore se porti i controlli personalizzati su Qt - se usi le classi QStyle per fare il disegno reale, finirai con il codice a tema subito pronto all'uso.

In generale, il mio consiglio sarebbe quello di mordere il proiettile e andare per tutto il tempo in una volta. Certo, potrebbe volerci più tempo, ma l'alternativa è passare un'età cercando di eseguire il debug del codice che non gioca abbastanza a palla, e finiscono per scrivere più codice per gestire le incompatibilità minori tra i due sistemi (è stato lì, fatto così).

Quindi, per riassumere, il mio consiglio è di avviare una filiale e strappare tutto il vecchio codice MFC e sostituirlo con Qt. Avrai l'indipendenza dalla piattaforma (quasi) gratuitamente e, anche se ci vorrà un po ', alla fine ti ritroverai con un prodotto molto più bello.

Un'ultima parola di avvertimento: assicurati di avere il tempo di capire il "modo di fare le cose Qt" - in alcuni casi può essere molto diverso dall'approccio MFC - l'ultima cosa che vuoi fare è finire con MFC- codice Qt di stile.


Nella mia azienda, attualmente utilizziamo Qt e ne siamo molto contenti.

Personalmente non ho mai dovuto spostare un'app MFC per utilizzare il framework Qt, ma ecco qualcosa che potrebbe essere di un certo interesse per voi:

Qt / MFC Migration Framework

Qt / MFC Migration Framework

Fa parte di Qt-Solutions, quindi questo significa che dovrai acquistare una licenza Qt insieme a una licenza Qt-Solutions. (modifica: non più )

Spero che aiuti !


(Questo in realtà non risponde alle tue domande specifiche ma ...) Non ho usato personalmente Qt, ma non è gratuito per lo sviluppo commerciale di Windows.

Hai guardato wxWindows che è gratuito? Bel articolo qui . Per inciso, se volessi un unico codice base per tutte le piattaforme, allora potresti dover migrare lontano da MFC - Sono abbastanza sicuro (qualcuno correggerà se sbagliato) che MFC si rivolge solo a Windows.

Un'altra opzione potrebbe essere quella di esaminare l' aggiornamento del Feature Pack su MFC in SP1 di VS2008 - include l'accesso a nuovi controlli, inclusi i controlli a nastro in stile Office.





mfc