2011-01-07 18 views
11

Devo eseguire il porting di un progetto da Borland C++ Builder 5.0 in Windows XP a Qt 4.7.1 utilizzando g ++ in Windows 7/mingw. Le librerie e le utilità della riga di comando sono state completate, e ora devo affrontare le applicazioni GUI, che usano Borland VCL.
Qualcuno può consigliare strumenti o librerie per semplificare questo compito?
Qualcuno ha esperienza di questo?Porting Borland C++ Builder to Qt

Modificato per aggiungere: Bene, ho preso il toro per le corna e implementato la GUI da zero. E devo dire che i commentatori avevano ragione: non riesco a vedere alcun modo di utilizzare l'interfaccia grafica di Borland esistente per facilitare il processo.

+0

Quanti moduli hanno le GUI del C++ Builder? Solo poche, dozzine, centinaia? Come probabilmente saprai, ottieni i migliori risultati se crei le GUI Qt da zero. –

+0

Alcune dozzine di forme. Alcuni di questi sono piuttosto complicati, con viste ad albero, schede ecc. Quindi non voglio crearli tutti da zero se posso evitarlo. – TonyK

+0

Mi sono chiesto quando qualcuno fa questa stessa domanda :) La conversione automatica da VCL a Qt non sembra essere un compito fattibile, comunque. –

risposta

8

Ci sono molte grandi differenze tra VCL e Qt che renderanno piuttosto difficile un processo di conversione automatico.

  • Qt utilizza segnali e slot ed ereditarietà in cui VCL utilizza eventi.
  • I componenti VCL utilizzano le coordinate assolute e Qt utilizza i layout. Naturalmente, è possibile utilizzare le coordinate assolute anche con Qt, ma le GUI sarebbero piuttosto orribili.
  • Le classi TListBox e TTreeView di VCL sono molto diverse dalle classi Qt's View e Model (sebbene sia possibile utilizzare QListWidget e QTreeWidget).

Immagino che sia molto più veloce progettare interfacce grafiche totalmente nuove con Qt che creare anche un mediocre convertitore VCL-to-Qt. E il codice sarà molto più facile da mantenere. Ti suggerisco di prendere una forma VCL di media complessità e ricrearla con Qt. Dopo di che puoi fare una stima del lavoro di ricreazione totale. Inoltre avrai una migliore comprensione della fattibilità di uno strumento di conversione, che probabilmente dovresti fare da solo.

1

Qualcuno ha scritto uno strumento per convertire DFM di file ui qt:

http://sourceforge.net/projects/dfm2qt4ui/

Relativo ha un paio di piccoli bug, ma si può risparmiare diverse ore di tempo porting disegni di forma. In alcuni casi è preferibile riprogettare le forme specifiche, ma in molti casi, avere etichette e controlli approssimativamente equivalenti posizionati per te consente di risparmiare un sacco di azioni point-and-click.

+0

Ho provato lo strumento. Il risultato non mi ha soddisfatto affatto.Vedo che il modo migliore per portare il progetto è l'implementazione della GUI da zero, come ha detto l'autore. – vrogach

+0

Dipende totalmente dal numero di controlli sul modulo, ecc. Mi ha risparmiato un sacco di lavoro ma i file .ui richiedono ancora molta riorganizzazione. Ma almeno i controlli hanno gli stessi nomi di variabili e sono già stati aggiunti ai moduli. Una riscrittura completa introdurrà sempre molti nuovi bug. – Pete

1

Sono d'accordo con il consenso corrente sul fatto che la conversione automatica da VCL a QT non è una buona idea perché il concetto alla base di entrambi è molto diverso, e si sta meglio imparando "il modo QT" e utilizzandolo fin dall'inizio.
Tuttavia c'è un passo importante che nessuno ha ancora menzionato: refactoring! Prima di iniziare, assicurati di rifattorizzare i moduli originali per rimuovere la maggior parte della logica di business possibile e lasciare solo ciò che è realmente codice della GUI. Dipende da quanto sia buona la tua architettura, ovviamente, ma il designer VCL tende a incoraggiare il più possibile nelle forme (arrivando addirittura ad avere "forme dati" invisibili con componenti non visive!), Quindi spesso trovi un sacco di cose nella forma che non dovrebbe essere lì.