2011-01-07 8 views
11

Ich muss ein Projekt von Borland C++ Builder 5.0 unter Windows XP zu Qt 4.7.1 mit g ++ unter Windows 7/mingw portieren. Die Bibliotheken und Befehlszeilen-Dienstprogramme sind fertig, und jetzt muss ich die GUI-Anwendungen angehen, die Borland VCL verwenden.
Kann jemand irgendwelche Werkzeuge oder Bibliotheken empfehlen, um diese Aufgabe zu erleichtern?
Hat jemand Erfahrung damit?Portierung von Borland C++ Builder auf Qt

Bearbeitet um hinzuzufügen: Nun, ich nahm den Stier bei den Hörnern und implementierte die GUI von Grund auf neu. Und ich muss sagen, die Kommentatoren hatten Recht: Ich kann keine Möglichkeit sehen, die vorhandene Borland-GUI zu verwenden, um den Prozess zu vereinfachen.

+0

Wie viele Formulare haben Ihre C++ Builder-GUIs? Nur ein paar, Dutzende, Hunderte? Wie Sie wahrscheinlich wissen, erhalten Sie die besten Ergebnisse, wenn Sie die Qt-GUIs von Grund auf neu erstellen. –

+0

Ein paar Dutzend Formen. Einige von ihnen sind ziemlich kompliziert, mit Baumansichten, Tabs usw. Ich möchte sie also nicht von Grund auf neu erstellen, wenn ich es vermeiden kann. – TonyK

+0

Ich habe mich gefragt, wenn jemand genau diese Frage stellt :) Automatische Konvertierung von VCL zu Qt scheint jedoch keine machbare Aufgabe zu sein. –

Antwort

8

Es gibt einige große Unterschiede zwischen VCL und Qt, die eine automatische Konvertierung sehr schwierig machen.

  • Qt verwendet Signale und Slots und Vererbung, wo VCL Ereignisse verwendet.
  • VCL-Komponenten verwenden absolute Koordinaten und Qt verwendet Layouts. Natürlich könnten Sie absolute Koordinaten auch mit Qt verwenden, aber die GUIs wären dann ziemlich schlecht.
  • Die TListBox- und TTreeView-Klassen der VCL unterscheiden sich stark von den Qt-Klassen View und Model (obwohl Sie stattdessen QListWidget und QTreeWidget verwenden könnten).
  • Ich denke, es ist viel schneller, völlig neue GUIs mit Qt zu entwerfen, als selbst einen mittelmäßigen VCL-to-Qt-Konverter zu erstellen. Und der Code wird viel einfacher zu pflegen sein. Ich schlage vor, dass Sie ein VCL-Formular von mittlerer Komplexität nehmen und das mit Qt neu erstellen. Danach können Sie die gesamte Erholungsarbeit abschätzen. Sie werden auch ein besseres Verständnis über die Machbarkeit eines Konvertierungstools haben, das Sie höchstwahrscheinlich selbst erstellen müssten.

    1

    Jemand hat ein Tool geschrieben DFM ist zu qt ui-Dateien zu konvertieren:

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

    Sein ein paar kleine Fehler hat, aber es kann mehrere Stunden Zeit portieren Formularentwürfe speichern. In einigen Fällen ist es sinnvoll, bestimmte Formulare neu zu gestalten. In vielen Fällen können jedoch Etiketten und ungefähr gleichwertige Steuerelemente, die für Sie positioniert sind, eine Menge Point-and-Click-Aktionen enthalten.

    +0

    Versuchte das Werkzeug. Das Ergebnis hat mich überhaupt nicht befriedigt.Ich sehe, dass die beste Art, das Projekt zu portieren, die Implementierung einer GUI von Grund auf ist, wie der Autor sagte. – vrogach

    +0

    Kommt ganz auf die Anzahl der Steuerelemente auf dem Formular usw. an. Es hat mir eine Menge Arbeit erspart, aber die .ui-Dateien erfordern immer noch viel Neuorganisation. Aber zumindest haben die Steuerelemente die gleichen Variablennamen und wurden bereits zu den Formularen hinzugefügt. Ein komplettes Neuschreiben wird immer viele neue Bugs enthalten. – Pete

    1

    Ich stimme dem aktuellen Konsens zu, dass die automatische Konvertierung von VCL zu QT keine gute Idee ist, weil das Konzept hinter beiden sehr unterschiedlich ist und Sie viel besser "QT-Weg" lernen und das von Anfang an verwenden.
    Allerdings gibt es einen wichtigen Schritt, den noch niemand erwähnt hat: Refactoring! Stellen Sie vor dem Start sicher, dass Sie die ursprünglichen Formulare umgestalten, um so viel Geschäftslogik wie möglich zu entfernen, und lassen Sie nur den eigentlichen GUI-Code. Es hängt natürlich davon ab, wie gut Ihre Architektur bereits ist, aber der VCL-Designer neigt dazu, so viel wie möglich in Formulare zu bringen (bis hin zu unsichtbaren "Datenformularen" mit nicht-visuellen Komponenten!), Die Sie oft finden eine Menge Zeug in der Form, die nicht da sein sollte.