2011-01-07 34 views
11

Tôi phải chuyển một dự án từ Borland C++ Builder 5.0 trong Windows XP sang Qt 4.7.1 bằng g ++ trong Windows 7/mingw. Các thư viện và các tiện ích dòng lệnh được thực hiện, và bây giờ tôi phải giải quyết các ứng dụng GUI, sử dụng Borland VCL.
Ai có thể đề xuất bất kỳ công cụ hoặc thư viện nào để thực hiện tác vụ này dễ dàng hơn không?
Có ai có kinh nghiệm về điều này không?Chuyển Borland C++ Builder sang Qt

Đã chỉnh sửa để thêm: Vâng, tôi lấy bò bằng sừng và triển khai GUI từ đầu. Và tôi phải nói, các nhà bình luận đã đúng: Tôi không thể thấy bất kỳ cách nào để sử dụng GUI Borland hiện có để giảm bớt quá trình này.

+0

Có bao nhiêu hình thức GUI C++ Builder của bạn? Chỉ một vài, hàng chục, hàng trăm? Như bạn đã biết, bạn sẽ có được kết quả tốt nhất nếu bạn tạo GUI Qt từ đầu. –

+0

Một vài chục biểu mẫu. Một số trong số đó khá phức tạp, với chế độ xem dạng cây, tab, v.v. Vì vậy, tôi không muốn tạo tất cả chúng từ đầu nếu tôi có thể tránh được. – TonyK

+0

Tôi đã tự hỏi khi ai đó hỏi câu hỏi này :) Tự động chuyển đổi từ VCL sang Qt dường như không phải là nhiệm vụ khả thi, tuy nhiên. –

Trả lời

8

Có một số khác biệt lớn giữa VCL và Qt sẽ làm cho quá trình chuyển đổi tự động trở nên khá khó khăn.

  • Qt sử dụng tín hiệu và vị trí và di sản mà VCL sử dụng sự kiện.
  • Thành phần VCL sử dụng tọa độ tuyệt đối và Qt sử dụng bố cục. Tất nhiên, bạn có thể sử dụng tọa độ tuyệt đối cũng với Qt, nhưng GUIs sẽ là khá khủng khiếp sau đó.
  • Các lớp TListBox và TTreeView của VCL hoàn toàn khác với các lớp Chế độ xem và Mô hình của Qt (mặc dù bạn có thể sử dụng QListWidget và QTreeWidget thay thế).

Tôi đoán thiết kế GUI hoàn toàn mới với Qt sẽ nhanh hơn nhiều so với việc tạo ngay cả bộ chuyển đổi VCL-sang-Qt tầm thường. Và mã sẽ dễ dàng hơn nhiều để duy trì. Tôi đề nghị bạn lấy một dạng VCL có độ phức tạp trung bình và tái tạo với Qt. Sau đó bạn có thể ước lượng tổng số công việc giải trí. Ngoài ra, bạn sẽ có một sự hiểu biết tốt hơn về tính khả thi của một công cụ chuyển đổi, mà bạn có thể sẽ cần phải thực hiện một mình.

1

Có người đã viết một công cụ để chuyển đổi của dfm đến file ui qt:

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

của nó có một vài lỗi nhỏ nhưng nó có thể tiết kiệm vài giờ thời gian porting thiết kế mẫu. Trong một số trường hợp, việc thiết kế lại các biểu mẫu cụ thể là thích hợp hơn - nhưng trong nhiều trường hợp, có các nhãn và các điều khiển tương đương gần được định vị để bạn tiết kiệm rất nhiều hành động điểm-và-nhấp.

+0

Đã thử công cụ. Kết quả không thỏa mãn tôi chút nào.Tôi thấy rằng cách tốt nhất để chuyển dự án là triển khai GUI từ đầu như tác giả đã nói. – vrogach

+0

Hoàn toàn phụ thuộc vào số lượng điều khiển trên biểu mẫu, v.v. Nó đã lưu cho tôi rất nhiều công việc nhưng vẫn là tệp .ui yêu cầu nhiều tổ chức lại. Nhưng ít nhất các điều khiển có cùng tên biến và đã được thêm vào các biểu mẫu rồi. Một viết lại hoàn toàn sẽ luôn luôn giới thiệu rất nhiều lỗi mới. – Pete

1

Tôi đồng ý với sự đồng thuận hiện tại rằng chuyển đổi tự động từ VCL sang QT không phải là ý tưởng hay vì khái niệm đằng sau cả hai là rất khác nhau và bạn tốt hơn hết là học "cách QT" và sử dụng nó ngay từ đầu.
Tuy nhiên, có một bước chính mà chưa ai đề cập đến: tái cấu trúc! Trước khi bắt đầu, hãy đảm bảo bạn cấu trúc lại các biểu mẫu ban đầu để loại bỏ càng nhiều logic nghiệp vụ càng tốt và chỉ để lại mã thực sự là gì. Nó phụ thuộc vào kiến ​​trúc của bạn đã tốt đến mức nào, nhưng nhà thiết kế VCL có khuynh hướng khuyến khích đặt càng nhiều càng tốt trong các biểu mẫu (thậm chí đi xa như có các "dạng dữ liệu" vô hình với các thành phần không trực quan), vì vậy bạn thường thấy rất nhiều thứ ở dạng không nên ở đó.

Các vấn đề liên quan