2011-01-07 11 views
11

Muszę przenieść projekt z Borland C++ Builder 5.0 pod Windows XP do Qt 4.7.1 używając g ++ pod Windows 7/mingw. Biblioteki i narzędzia wiersza poleceń są gotowe, a teraz muszę zająć się aplikacjami GUI, które używają Borland VCL.
Czy ktoś może polecić jakiekolwiek narzędzia lub biblioteki, aby ułatwić to zadanie?
Czy ktoś ma takie doświadczenie?Przenoszenie Borland C++ Builder do Qt

Edytowane w celu dodania: Cóż, wziąłem byka za rogi i zaimplementowałem GUI od zera. I muszę powiedzieć, że komentatorzy mieli rację: nie widzę żadnego sposobu wykorzystania istniejącego GUI Borland, aby ułatwić ten proces.

+0

Ile formularzy ma twój GUI Builder C++? Tylko kilka, kilkadziesiąt, setki? Jak zapewne wiesz, najlepsze wyniki uzyskasz, jeśli utworzysz GUI Qt od zera. –

+0

Kilka tuzinów formularzy. Niektóre z nich są dość skomplikowane, z widokami drzewa, zakładkami itp. Nie chcę więc tworzyć ich wszystkich od zera, jeśli mogę tego uniknąć. – TonyK

+0

Zastanawiam się, kiedy ktoś zadaje to pytanie :) Automatyczna konwersja z VCL na Qt nie wydaje się jednak wykonalnym zadaniem. –

Odpowiedz

8

Istnieje kilka dużych różnic między VCL i Qt, które spowodują, że proces automatycznej konwersji będzie dość trudny.

  • Qt używa sygnałów i gniazd oraz dziedziczenia, w których VCL używa zdarzeń.
  • Komponenty VCL używają współrzędnych bezwzględnych, a układy Qt używają układów. Oczywiście można używać współrzędnych bezwzględnych również z Qt, ale GUI byłoby wtedy dość okropne.
  • Klasy TListBox i TTreeView VCL znacznie różnią się od klas Qt's View i Model (chociaż można zamiast tego użyć QListWidget i QTreeWidget).

Myślę, że to jest o wiele szybciej zaprojektować zupełnie nowe GUI Qt niż tworzyć nawet przeciętny konwerter VCL-to-Qt. Kod będzie znacznie łatwiejszy w utrzymaniu. Proponuję wziąć jedną formę VCL o średniej złożoności i odtworzyć ją za pomocą Qt. Następnie możesz oszacować całkowitą pracę rekreacyjną. Ponadto będziesz mieć lepsze zrozumienie możliwości narzędzia konwersji, które prawdopodobnie musiałbyś wykonać samodzielnie.

1

Ktoś napisał narzędzie do konwersji DFM do qt plików Ui:

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

Its ma kilka drobnych błędów, ale może zaoszczędzić kilka godzin przenoszeniu wzorów formularzy. W niektórych przypadkach lepszym rozwiązaniem jest przeprojektowanie określonych formularzy - ale w wielu przypadkach posiadanie etykiet i mniej więcej równoważnych kontrolek ustawionych dla Ciebie oszczędza wiele akcji wskaż i kliknij.

+0

Wypróbowałem narzędzie. Wynik mnie nie zadowalał.Widzę, że najlepszym sposobem na przeniesienie projektu jest implementowanie GUI od zera, jak powiedział autor. – vrogach

+0

Zależy całkowicie od liczby elementów sterujących w formularzu itp. Zaoszczędził mi wiele pracy, ale pliki .ui wymagają wiele reorganizacji. Ale przynajmniej kontrolki mają te same nazwy zmiennych i zostały już dodane do formularzy. Kompletne przepisanie zawsze wprowadzi wiele nowych błędów. – Pete

1

Zgadzam się z obecnym konsensu, że automatyczna konwersja z VCL na QT nie jest dobrym pomysłem, ponieważ koncepcja kryjąca się za obydwoma jest bardzo różna i dużo lepiej poznasz "sposób QT" i używasz go od samego początku.
Jest jednak jeden ważny krok, o którym nikt jeszcze nie wspomniał: refaktoryzacja! Zanim zaczniesz, upewnij się, że odfiltrowałeś oryginalne formularze, aby usunąć jak najwięcej logiki biznesowej i pozostawić tylko to, co naprawdę jest GUI. To zależy od tego, jak dobra jest twoja architektura, ale projektant VCL raczej zachęca do umieszczania jak najwięcej w formach (nawet idąc tak daleko, jak niewidoczne "formularze danych" z niewizualnymi komponentami!), Więc często znajdujesz dużo rzeczy w formie, których nie powinno tam być.