2008-09-23 35 views

Trả lời

10

Tôi đã sử dụng Qt trên một vài dự án tôi đã làm trong c + + trên một số nền tảng trong khoảng thời gian bảy năm. Tôi nghĩ rằng nó hoạt động khá tốt và chắc chắn là nhanh hơn cho tôi để phát triển một ứng dụng GUI phong nha trên Mac hơn plodding thông qua một ngôn ngữ tôi không biết (Objective-C) vào thời điểm đó.

Tôi nghĩ rằng cơ chế tín hiệu/khe cắm hơi sôi nổi nhưng không phải là khủng khiếp. Một khi bạn đang sử dụng nó một chút, nó không phải là một stopper hiển thị. Các công cụ kết nối dễ dàng bungle (hoặc ít nhất là nó) và nó luôn luôn tốt để kiểm tra sự trở lại trên những người vì ứng dụng của bạn sẽ đi vui vẻ trên đường đi của nó và không cho bạn biết rằng nó không hoạt động.

Tôi chưa bao giờ sử dụng jambi.

0

Qt là một thư viện rất hay, nhưng nó có giấy phép nhà phát triển cho mỗi chỗ ngồi đắt tiền, vì vậy nó không phải lúc nào cũng hữu ích cho tất cả các dự án.

+2

Qt không phải là thư viện, nó là một khuôn khổ. – nbro

3

Trên C++, các lựa chọn thay thế duy nhất khác của bạn là MFC và wxWidgets. QT/wxWidgets chủ yếu là sở thích cá nhân. Tôi nghĩ QT là một thiết kế sạch sẽ với tài liệu tốt.
Chi phí QT khoảng một tháng lương của nhà phát triển nếu bạn không sử dụng nó cho GPL.

+1

Tất nhiên có những lựa chọn khác so với MFC và wxWidgets! Ví dụ, có WTL! –

+0

WTL khá lãng phí và quá gần với MFC cho sự thoải mái - không chắc chắn tôi đã chọn nó cho bất cứ thứ gì khác ngoài một tiện ích nhỏ –

+1

Có một số bộ công cụ khác. Fltk, Gtk nói riêng có các ràng buộc C++, nhưng bất kỳ bộ công cụ gui nào với các ràng buộc C đều có thể sử dụng được. –

28

Tôi đã sử dụng Qt trong nhiều năm để phát triển thương mại và đã rất hài lòng với nó.

Một trong những điều tuyệt vời với Qt là nó cung cấp một bộ thư viện lớn cũng như các công cụ GUI (ví dụ: phân tích cú pháp XML, chủ đề, nối mạng), tất cả theo kiểu nhất quán và đa nền tảng. Điều này có nghĩa là chúng ta hiếm khi cần sử dụng các thư viện khác, mặc dù chúng tôi sử dụng tăng cường cho một số thứ.

Một yếu tố rất quan trọng khác đối với chúng tôi là quốc tế hóa. Trong một ứng dụng dựa trên MFC trước đây, chúng tôi đã phải duy trì 2 phiên bản được bản địa hóa cho hai ngôn ngữ mà chúng tôi hỗ trợ. Trong ứng dụng dựa trên Qt của chúng tôi, chúng tôi chỉ có một phiên bản.

  • Hệ thống dịch Qt, sử dụng ngôn ngữ học rất dễ dàng để sử dụng và làm cho việc hỗ trợ nhiều ngôn ngữ đơn giản (tất nhiên bạn vẫn phải dịch các chuỗi đó là rất nhiều công việc!)
  • GUI hệ thống bố trí nơi các tiện ích thay đổi kích thước theo bố cục giúp mọi thứ trở nên dễ dàng hơn nhiều. Trong các ngôn ngữ khác nhau, độ dài của các chuỗi khác nhau. Với các tiện ích kích thước cố định (như MFC), mỗi hộp thoại cần được điều chỉnh cho từng ngôn ngữ, nếu không các phần của nhãn sẽ bị cắt bỏ. Với Qt, họ tự thay đổi kích thước. Tất nhiên, có những trường hợp khi nó không hoạt động chính xác nhưng nó vẫn làm mọi thứ trở nên dễ dàng hơn nhiều.
  • QString thực hiện mọi thứ trong Unicode và xử lý các chuyển đổi từ các codec khác nhau rất dễ dàng.

Một điều rất có giá trị là quyền truy cập vào nguồn, mặc dù e điều này chắc chắn không phải là duy nhất đối với Qt. Đôi khi khả năng kiểm tra nguồn Qt đã giải thích một số hành vi lạ hoặc được đưa ra một đầu mối làm thế nào để đạt được điều gì đó.

Chúng tôi đã tìm thấy một vài lỗi trong Qt, một số lỗi đã được khắc phục sau khi báo cáo cho Trolltech. Trong các trường hợp khác, họ đã đề xuất một công việc xung quanh. Tất cả những điều này đều khá mơ hồ và không có tác động lớn đến sự phát triển của chúng ta.

Một trong những nhược điểm chính đối với Qt là thiếu thư viện của bên thứ ba để sử dụng trong các ứng dụng thương mại.Tuy nhiên, Qt khá hoàn chỉnh nên đối với chúng tôi nó không phải là một vấn đề lớn, mặc dù điều đó sẽ phụ thuộc vào loại ứng dụng bạn đang phát triển.

Tôi chưa sử dụng Jambi.

+0

Xin chào David, Thư viện của bên thứ ba mà bạn đang đề cập đến là gì? Bạn có thể cho tôi một ví dụ không? – Krishnan

+0

Tôi bắt đầu sử dụng Qt cách đây một tháng, sử dụng Qt Quick mới. Đơn khiếu nại lớn nhất cho đến nay là nếu bạn phạm sai lầm, nó không ném ngoại lệ hoặc báo cáo lỗi, chỉ không làm những gì bạn muốn mà không có gợi ý về những gì bạn đã làm sai. Rất nhiều vấn đề nghiêm trọng khác nữa. – Mitch

3

Tôi đã sử dụng Qt trong hơn hai năm nay.

Những điều tôi thích về Qt là:

  • Dễ GUI lập trình (so với MFC), Qt Designer
  • lớp container đẹp
  • khung đẹp cảnh đồ họa
  • Tuyệt vời tài liệu với các ví dụ hữu ích
  • Hỗ trợ dịch thuật
  • Hỗ trợ kỹ thuật tốt

Tôi rất có thể khuyên bạn nên Qt Developer Days. Nếu bạn có cơ hội tham gia, hãy làm điều đó! Rất nhiều cuộc trò chuyện thú vị và thú vị ở đó.

4

Tôi đã sử dụng Qt trong công việc trước đó. Tôi chỉ có một thời gian ngắn nhất liên lạc với Qt vài năm trước đó, vì vậy tôi đã khá là một newt Qt.

Khi tôi bắt đầu, tôi được yêu cầu chọn ngôn ngữ và môi trường của mình, nhưng hỗ trợ đa nền tảng là mong muốn. Tôi đã thử Qt và Java, và thậm chí đã cho C# một đi chỉ cho heck của nó. Tôi đã cho bản thân mình hai ngày để đánh giá từng tùy chọn.

Có lẽ tôi hơi thiên vị với lịch sử của mình với tư cách là nhà phát triển C++, nhưng sau khi dành thời gian cho mỗi tùy chọn, Qt là tùy chọn duy nhất cho thấy bất kỳ gợi ý nào hữu ích mà không có đường cong học tập lâu dài.

Tài liệu được cung cấp với Qt và các ứng dụng mẫu đã làm cho nhà phát triển có kinh nghiệm rất dễ dàng nhưng người mới bắt đầu sử dụng Qt để hoạt động rất nhanh. Tôi đã có nguyên mẫu UI/mockups của ứng dụng kết thúc được thực hiện vào cuối thời gian dùng thử của tôi. Với Java/Eclipse, Java/SunStudio và C#/VS.net, tôi gặp khó khăn khi nhận được bất kỳ điều gì không xảy ra trong thời gian đó.

Tín hiệu/vị trí đã sử dụng nhưng không quá tệ và tôi đã viết một số trình bao bọc đơn giản để khẳng định khi nào kết nối không thể ngăn chặn lỗi chính tả từ ứng dụng. từ làm việc.

Điều khác tôi thích là Qt có hầu hết mọi thứ tôi cần. Bạn đặt tên cho nó - lưu trữ, kết nối mạng, GUI, luồng, container - Qt có một lớp để xử lý nó. IMHO nào là quan trọng vì việc trộn các thư viện đôi khi có thể gây ra vấn đề. Có mã nguồn để Qt là một lợi thế lớn, một cho lợi ích của đồng bằng chỉ, nhưng nó cũng cho phép tôi biên dịch Qt bằng cách sử dụng trình biên dịch và cài đặt lựa chọn của tôi, bao gồm một phiên bản gỡ lỗi để sử dụng trong quá trình phát triển.

Tôi cũng nhận thấy hỗ trợ của Trolltech khá tốt. Tôi đã nêu ra một vài lỗi trên Qt, một trong số đó đã được sửa và phát hành trong khi tôi vẫn đang làm việc trên dự án (chỉ có một công việc 6 tháng). Các chỉ tiêu cực tôi có thể nhớ lại là khó khăn trong việc gỡ lỗi các đối tượng Qt (sử dụng VS) - có một plugin Qt cho VS có thể kiểm tra các đối tượng Qt nhưng tôi đang sử dụng phiên bản miễn phí của VS và các plugin không hoạt động nó. Nhưng đó không phải lỗi của Qt.

Tôi chưa sử dụng jambi nên không thể nhận xét.

8

Dưới đây là một số thuận và chống của tôi với Qt:

Ưu điểm:
Cross-nền tảng
Tôi biết cái này luôn được sử dụng, nhưng sau khi đi qua lại giữa Windows và Linux với Qt , thật ngạc nhiên là tôi phải làm gì để đứng dậy và chạy. Tôi nghĩ rằng điều này được giúp đỡ bởi thực tế tôi chỉ sử dụng Vim với Qt Designer.

QMake
Đây là một trong những khía cạnh yêu thích của tôi về Qt. Sau khi làm việc trong wxWidgets, FLTK, vv, tôi cảm thấy mệt mỏi vì rối tung xung quanh với các hệ thống xây dựng khác nhau và tôi không muốn tạo thủ công các makefiles của mình. Tôi hiện đang sử dụng CMake trên bất kỳ thứ gì khác ngoài Qt ngay bây giờ, nhưng tôi nghĩ rằng tôi đang dần chuyển động ngay cả Qt sang CMake. Tuy nhiên nó rất dễ dàng để có được đi với QMake.

QTestLib
Tôi nhìn một vài khuôn khổ thử nghiệm khác C++ đơn vị và khi tôi tạo ra các bài kiểm tra của tôi sử dụng QTestLib, nó cảm thấy rất giống với NUnit (C#) và trong vòng vài phút tôi đã có một số bài kiểm tra đi qua. Tôi cũng nhận thấy rằng sẽ rất dễ dàng để tạo ra môi trường continuous integration của riêng tôi.

Gần nhất với Java và .Net trong năng suất
Điều lớn nhất tôi nghe/đọc mọi người nói về C++ là "Tôi có thể làm việc hiệu quả hơn với Java hoặc .Net". Từ kinh nghiệm cá nhân tôi có thể nhận được một mẫu thử nghiệm của một ứng dụng đang chạy trong Qt sử dụng Vim và Qt Designer, trước khi Eclipse hoặc Visual Studio thậm chí tải. Tôi cũng nhận được một bộ thư viện rất giống nhau trong Qt mà tôi có trong .Net hoặc Java và nếu nó không có ở đó tôi có thể tận dụng mã C++ hiện có trên mạng.


Nhược điểm:
Giá
Đây là yếu tố lớn nhất mà tôi có thể nghĩ ngay bây giờ. Tuy nhiên, chi phí là giá trị mỗi cent, um nếu tôi biết bao nhiêu xu tôi đã phải tiết kiệm mà không thực hiện một cuộc gọi đến một đại diện bán hàng. Tôi mua lại một giấy phép trong ngày khi họ đã giảm giá kinh doanh nhỏ của họ và nó đã được giá trị nó sau đó, tôi đã trả tiền ba lần nhiều và tôi nghĩ rằng đó là mức giá hiện tại.

Phát triển mọi nơi với giấy phép thương mại
Tôi rất muốn có thể phát triển trên mọi nền tảng, nhưng xây dựng và bán cho nền tảng khác. Ví dụ, phát triển trên Linux, sau đó xây dựng và triển khai trên Windows nếu bạn chỉ có giấy phép thương mại Windows. Từ những gì tôi biết, bạn chỉ có thể phát triển và xây dựng một ứng dụng thương mại trên nền tảng mà bạn có giấy phép.

Khóa nhà cung cấp
Đây là loại cá nhân. Tôi không thích bị ràng buộc với một nhà cung cấp cụ thể bởi vì tôi nhận được bên theo dõi theo hướng công ty và hướng sản phẩm. TrollTech đã được Nokia mua, điều này tốt hay xấu mà tôi không biết, nhưng một công ty có kích thước có thể làm những điều xấu xa.


Tôi nghĩ rằng tôi đã hoàn tất ngay bây giờ :). Oh, tôi đã không sử dụng Jambi nhưng tôi thực sự quan tâm đến việc thực hiện một vài dự án mẫu thử nghiệm để tìm ra cách dễ dàng là sử dụng một plugin được phát triển trong C++ với Jambi. Đặc biệt là sử dụng Jambi như một giao diện web với các plugin C++.

Thành thật mà nói tôi đã không đọc nhiều về nó, vì vậy nó có thể là không thể hoặc rất dễ dàng.

+4

chi phí nào? bây giờ là LGPL và GPL đã diễn ra kể từ ngày đầu tiên! – fengshaun

+0

Ban đầu nó là> 2500GBP/nhà phát triển trên Windows, sau đó nó đã được GPL trên Linux (không giúp đỡ nhiều nếu bạn đang làm các ứng dụng thương mại) sau đó trở thành LGPL khoảng một năm trước đây. –

0

Đừng sử dụng nó, tuy nhiên ...

Pro: QT có một tùy chọn bố trí 3 pha, nơi như WX chỉ cho phép hiện 2 (Tôi tin rằng họ có kế hoạch làm 3 giai đoạn, chỉ cần có không làm việc đó chưa).

Một trong những vấn đề lớn hơn khi sử dụng bố cục là văn bản tĩnh và gói. WX hỏi chiều rộng/chiều cao và phần nhỏ nhất của bạn ra ngoài màn hình như thế nào, QT có tùy chọn để nói bạn muốn bao nhiêu, bạn cần phải cao bao nhiêu nếu X của bạn rộng. Điều này cho phép bạn thể hiện luồng của trang tốt hơn nhiều.

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