Như các áp phích khác được đề cập, vấn đề chính là đảm bảo bạn không bao giờ chạm vào một API không đa nền tảng phi Qt khác. Hoặc thậm chí là một API đa nền tảng không Qt khác, nếu bạn sử dụng Qt bạn cần phải cam kết với nó, đó là một khuôn khổ toàn diện và phần lớn gắn bó với Qt thì dễ hơn là đi đến bất kỳ thứ gì khác. Có một số lợi thế tốt đẹp như các nguyên thủy cơ bản trong chương trình của bạn sẽ làm việc theo cùng một cách trên tất cả các nơi. (tức là một QString trong mã mạng của bạn sẽ giống như một QString trong mã giao diện của bạn.) Tính linh hoạt, nếu bạn ở trong API Qt cung cấp cho bạn, nó sẽ hoạt động trên nhiều nền tảng. Sẽ có những khu vực mà bạn có thể cần phải gọi một số chức năng Qt cung cấp các chỉnh sửa nền tảng cụ thể quan trọng đối với một số nền tảng so với các nền tảng khác (ví dụ như biểu tượng dock) và bạn sẽ không ngay lập tức có ứng dụng được đánh bóng trên cả ba nền tảng . Nhưng nói chung, bạn nên ở rất gần với một ứng dụng biên dịch và chạy trên cả ba ứng dụng. (Hãy thử sử dụng qmake hoặc một hệ thống xây dựng tương tự, vì quá trình xây dựng cho các ứng dụng Qt thay đổi tùy theo nền tảng. Các cờ khác nhau, v.v.)
Có một số vấn đề kỳ lạ xuất hiện khi bạn kết hợp Qt với các API khác như OpenGL, đặc biệt là cách cửa sổ khóa GL bối cảnh khác với cách OS X và Linux không, vì vậy nếu bạn định sử dụng OpenGL với nhiều chủ đề, hãy cố gắng biên dịch định kỳ trên các nền tảng khác để đảm bảo không có gì hoàn toàn bị vỡ. Điều này cũng sẽ nhanh chóng chỉ ra các khu vực nơi bạn có thể vô tình sử dụng API hệ thống không đa nền tảng.
Tôi đã sử dụng Qt với một nhóm để xây dựng trò chơi mạng nhiều người chơi nhiều thời gian 3-d đa luồng (đọc: ứng dụng không tầm thường sử dụng nhiều khu vực Qt) và chúng tôi không có gì ngoài việc thổi bay bởi tính hiệu quả của khả năng hỗ trợ nhiều nền tảng của Qt. (Chúng tôi phát triển trên OS X trong khi nhắm mục tiêu Windows và tôi thường xuyên đảm bảo rằng nó vẫn chạy trên Linux.) Chúng tôi chỉ gặp một vài lỗi cụ thể trên nền tảng, hầu như tất cả đều phát sinh từ việc sử dụng các API không phải Qt như OpenGL. (Mà thực sự nên nói với bạn điều gì đó, rằng OpenGL đã được nhiều hơn một cuộc đấu tranh để sử dụng nền tảng chéo hơn Qt được.)
Vào cuối của kinh nghiệm, chúng tôi đã hài lòng với thời gian ít nhất chúng ta cần phải chi tiêu đối phó với nền tảng cụ thể lỗi. Thật đáng ngạc nhiên khi chúng tôi có thể tạo ra một ứng dụng GUI cho các cửa sổ cho hầu như không ai trong nhóm thực sự sử dụng nó như một nền tảng phát triển chính thông qua dự án.
Nhưng hãy kiểm tra sớm và thường xuyên. Tôi không nghĩ rằng cách tiếp cận của bạn viết một ứng dụng toàn bộ và sau đó thử nghiệm là một ý tưởng tốt. Có thể với Qt, nhưng không chắc nếu bạn không có kinh nghiệm viết mã di động và/hoặc là mới đối với Qt.
Nguồn
2010-01-11 08:03:10
Đây là * hoàn toàn * không đúng sự thật. Qt là nhiều hơn một thư viện GUI đa nền tảng và bạn cần phải nghiên cứu thêm về nó trước khi trả lời các câu hỏi về nó. Nó cung cấp tất cả mọi thứ từ hệ thống tập tin đa nền tảng gọi đến các cấu trúc dữ liệu cấp cao trên nền tảng chéo tới mạng đa nền tảng đến các thành phần trình duyệt nhúng đa nền tảng. –