2008-08-26 37 views
9

Chúng tôi hiện đang duy trì một bộ các ứng dụng MFC được thiết kế khá tốt, tuy nhiên giao diện người dùng bắt đầu trông mệt mỏi và rất nhiều mã đang cần một chút refactoring để dọn dẹp một số các vấn đề trùng lặp và/hoặc hiệu suất. Chúng tôi sử dụng khá một vài điều khiển tùy chỉnh xử lý tất cả bản vẽ của riêng họ (tất cả được viết bằng MFC).Tích hợp Qt vào ứng dụng MFC cũ

Gần đây tôi đã nghiên cứu thêm về Qt và những lợi ích mà nó cung cấp (nền tảng và hỗ trợ những gì bạn có thể gọi là khung tìm kiếm chuyên nghiệp hơn cho phát triển UI).

Câu hỏi của tôi là - cách tiếp cận tốt nhất để chuyển sang khung Qt là gì? Qt có chơi tốt với MFC không? Nó sẽ được tốt hơn để bắt đầu porting một số điều khiển tùy chỉnh của chúng tôi để Qt và dần dần tích hợp nhiều hơn và nhiều hơn nữa vào các ứng dụng MFC hiện có của chúng tôi? (điều này có thể không?).

Mọi lời khuyên hoặc trải nghiệm trước đó đều được đánh giá cao.

Trả lời

8

Trong công ty của tôi, chúng tôi hiện đang sử dụng Qt và rất hài lòng với nó.

tôi personnally bao giờ phải di chuyển một MFC-ứng dụng vào sử dụng khuôn khổ Qt, nhưng đây là một cái gì đó mà có thể là một số lợi ích cho bạn:

Qt/MFC Migration Framework

Qt/MFC Migration Framework

Đó là một phần của Qt-Solutions, vì vậy điều này có nghĩa là bạn sẽ phải mua giấy phép Qt cùng với giấy phép Qt-Solutions. (chỉnh sửa: not any more)

Tôi hy vọng điều này sẽ hữu ích!

2

(Điều này không thực sự trả lời các câu hỏi cụ thể của bạn nhưng ...) Tôi chưa từng sử dụng Qt, nhưng nó không miễn phí cho phát triển Windows thương mại.

Bạn đã xem wxWindows miễn phí chưa? Bài viết đẹp here. Cũng giống như một bên, nếu bạn muốn có một mã cơ sở cho tất cả các nền tảng, thì bạn có thể phải di chuyển ra khỏi MFC - Tôi khá chắc chắn (ai đó sẽ sửa nếu sai) mà MFC chỉ nhắm mục tiêu Windows.

Một tùy chọn khác sẽ là xem xét Feature Pack update tới MFC trong SP1 của VS2008 - nó bao gồm quyền truy cập vào các điều khiển mới, bao gồm các điều khiển dải kiểu Office.

+1

Qt hiện được cấp phép LGPL (http://www.heise.de/ix/Qt-Toolkit-mit-LGPL-Lizenz--/news/meldung/121584). AFAIK có nghĩa là * * miễn phí cho mục đích thương mại. –

+1

hoặc bằng tiếng Anh: http://www.qtsoftware.com/about/news/lgpl-license-option-added-to-qt – gbjbaanb

+0

Nó luôn hợp pháp để sử dụng thương mại khi liên kết với thư viện động và thông báo về điều đó trong ứng dụng giấy phép – killdaclick

0

Đó là một vấn đề phức tạp và tôi nghi ngờ câu trả lời tùy thuộc vào thời gian bạn có. Bạn sẽ nhận được kết quả tốt hơn nhiều nếu bạn chuyển các điều khiển tùy chỉnh thành Qt - nếu bạn sử dụng các lớp QStyle để thực hiện bản vẽ thực tế thì bạn sẽ kết thúc với mã có thể tạo chủ đề ngay trên hộp.

Nói chung, lời khuyên của tôi là cắn viên đạn và đi toàn bộ cùng một lúc. Chắc chắn, có thể mất nhiều thời gian hơn, nhưng thay thế là dành một tuổi cố gắng gỡ lỗi mã không khá chơi bóng và kết thúc viết nhiều mã hơn để đối phó với sự không tương thích nhỏ giữa hai hệ thống (đã có, thực hiện điều đó).

Vì vậy, để tóm tắt, lời khuyên của tôi là bắt đầu một chi nhánh và trích xuất tất cả mã MFC cũ của bạn và thay thế bằng Qt. Bạn sẽ nhận được nền tảng độc lập (gần như) miễn phí, và trong khi nó sẽ mất một lúc, bạn sẽ kết thúc với một sản phẩm đẹp hơn nhiều ở phần cuối của nó.

Một lời cảnh báo cuối cùng: đảm bảo bạn dành thời gian để hiểu "Cách làm mọi thứ" - trong một số trường hợp có thể hoàn toàn khác với phương pháp MFC - điều cuối cùng bạn muốn làm là kết thúc với mã Qt kiểu MFC.

0

Tôi đã lãnh đạo một nhóm làm việc này trước đây (không phải MFC cho QT nhưng các nguyên tắc sẽ hoạt động).

Trước tiên, chúng tôi đã ghi lại các hộp thoại và đầu vào, điều khiển và đầu ra của chúng. Ngoài ra, chúng tôi tạo ra một số trường hợp thử nghiệm đặc biệt là cho bất kỳ logic thông minh bên trong GUI.

Đôi khi chúng tôi phải tái cấu trúc một số logic nghiệp vụ để cung cấp giao diện sạch GUI, nhưng đây là cách mà nó nên được thực hiện ở vị trí đầu tiên tbh.

Bây giờ chúng tôi đã có danh sách các GUI, đầu vào, đầu ra, kiểm tra và giao diện mà GUI đóng gói phải khớp.

Chúng tôi đã bắt đầu, dự án theo dự án, để tạo các giao diện đồ họa thông minh cho những người cũ. Một khi chúng tôi đã làm điều đó chúng tôi có thể khe GUI ở nơi cũ, xây dựng lại và kiểm tra nó. Lúc đầu, chúng tôi đã vấp phải rất nhiều nhưng chúng tôi đã sớm tìm ra các lỗi phổ biến và sửa chúng. Chúng tôi điều hướng (tôi nghĩ) 612 hộp thoại mặc dù có một nhóm khoảng một chục người trong số chúng tôi làm việc trên đó.

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