Sự khác biệt giữa các ứng dụng GTK và QT là gì?


54

Nhiều gói có sẵn trong cả hai phiên bản GTK và QT.

  • Sự khác biệt giữa chúng là gì?
  • Có sự khác biệt trong hiệu suất hoặc phương pháp làm việc?

Câu trả lời:


41

Nói chung, sự khác biệt từ góc độ người dùng nên hoàn toàn là mỹ phẩm. Qt và GTK thiết lập các chủ đề một cách độc lập (thông qua, ví dụ, qtconfighoặc gtk-chtheme) nhưng điều này được hài hòa bởi một số môi trường máy tính để bàn.

GNU / Linux có xu hướng thiên về GTK hơn Qt theo nghĩa là cái trước được sử dụng phổ biến hơn, vì vậy bạn có thể muốn sử dụng nó khi được lựa chọn; một ngoại lệ sẽ thuộc KDE, sử dụng Qt cho các ứng dụng riêng của mình - mặc dù không có yếu tố nào trong số này là rất quan trọng.

Một vấn đề quan trọng hơn sẽ là trong bối cảnh với RAM rất hạn chế (như, <1/4 GB); trong trường hợp này có lẽ bạn sẽ muốn hệ thống sử dụng GTK hoặc Qt độc quyền , nhưng không phải cả hai. Tuy nhiên, trên hầu hết các máy tính để bàn hiện đại có bộ nhớ gigabyte, điều này không phải là vấn đề đáng lo ngại - sử dụng cả hai cách rộng rãi có thể khiến bạn phải trả thêm 50 - 100 MB.


Lưu ý rằng cũng có các phiên bản khác nhau của cả GTK (2 và 3) và Qt (3 và 4) vẫn được sử dụng rộng rãi nhưng không tương thích ngược (vì vậy ứng dụng Qt 3 không thể sử dụng thư viện Qt 4). Tuy nhiên, cả hai phiên bản có thể tồn tại trên một hệ thống cùng một lúc và hậu quả nghiêm trọng nhất của việc này sẽ là khả năng gây nhầm lẫn và phình to bộ nhớ hơn một chút.


8
Tôi sẽ vô cùng thích thú khi biết làm thế nào bạn đến với conclusuion rằng Linux có định hướng GTK hơn? Linux, thường chỉ ngụ ý nhân Linux, nói chung không có sự thiên vị đối với một trong hai bộ công cụ, vì nó là nhân hệ điều hành, không phải là chương trình không gian người dùng GUI. Nếu bạn muốn ám chỉ GNU / Linux là một hệ điều hành, tôi vẫn sẽ tranh chấp khiếu nại của bạn. Nói rằng GNU / Linux thiên về GTK hơn vì Ubuntu là bản phân phối phổ biến nhất giống như nói Christiano Ronaldo là người chơi thể thao giỏi nhất vì bóng đá là trò chơi được chơi nhiều nhất trên thế giới. (Tôi cũng tranh cãi về điều đó)
darnir

10
@darnir Tôi sẽ đặt vòng loại "GNU" vì tôi có nghĩa là hệ điều hành theo nghĩa thông tục. Tôi sẽ bảo vệ luận điểm của mình rằng nhiều GTK hơn định hướng Qt: GTK (ban đầu là viết tắt của "Bộ công cụ GIMP" và GIMP = Chương trình thao tác hình ảnh GNU), GIMP và Gnome đều là các dự án GNU và một phần cốt lõi tầm nhìn (vùng người dùng) của họ đối với một hệ điều hành, được ghép nối với kernel là "linux" trong lịch sử. Vì vậy, GTK được phát triển chủ yếu cho linux, nó cũng là C gốc (so với C ++ của Qt), trong khi Qt là một thực thể đa nền tảng thực sự.
goldilocks

1
Mặc dù tôi sẽ đồng ý với bạn về lịch sử và từ nguyên của GTK, nhưng điều này không ngụ ý rằng GNU / Linux được định hướng GTK. Trong thực tế, điều ngược lại là đúng và được xác nhận bởi tuyên bố của bạn. GTK được thiết kế cho linux, không phải theo cách khác. Tôi bảo vệ luận điểm của mình khi tuyên bố rằng Linux là hạt nhân và GNU / Linux với tư cách là một hệ điều hành không thể tin được đối với bất kỳ Bộ công cụ GUI nào. GTK thường được thấy trong tự nhiên nhiều hơn Qt vì sự phụ thuộc nặng nề của Ubuntu vào nó. Ngoài ra thực tế là nó nhẹ hơn về tài nguyên hệ thống giúp.
darnir

3
@darnir Có, HĐH về cơ bản là không biết WRT bộ công cụ GUI - Tôi sẽ không khẳng định GTK là "bộ công cụ" gốc, v.v. Nhưng bạn đã nhầm về lý do tại sao nó "thường được nhìn thấy nhiều hơn" - GTK đã bộ công cụ được sử dụng rộng rãi nhất trên nền tảng trước khi Ubuntu tồn tại do mối quan hệ đã nói ở trên với các bộ phận cơ bản khác được sử dụng rộng rãi bởi tất cả các bản phát hành. Đây là lý do tại sao hầu hết các ứng dụng GUI linux đều là ứng dụng GTK và tại sao, không có thêm ngữ cảnh, sẽ có ý nghĩa khi nói với người dùng mới "Bạn cũng có thể chọn ứng dụng đó", tất cả những thứ khác đều bằng nhau. Nhưng nó không thực sự quan trọng.
goldilocks

Sử dụng nhiều bộ công cụ khác nhau cũng sẽ cần nhiều bộ nhớ hơn; Tôi không nghĩ rằng điều này sẽ tác động đến hiệu suất, mặc dù, chỉ là không gian cho những thứ khác.
DaimyoKirby

19

Không, không có sự khác biệt trong cấu trúc bên trong của các chương trình như vậy. GTK và Qt là các bộ công cụ và khung giao diện người dùng. Chúng là các thư viện mà các nhà phát triển sử dụng để thiết kế giao diện đồ họa.

Khi một chương trình đồ họa (GUI) được viết, đầu tiên các phần bên trong cốt lõi của nó được phát triển. Đây là những gì làm cho chương trình chạy. Bạn không bao giờ nhìn thấy cốt lõi, họ chỉ đơn giản thực hiện trong nền. Trên lõi này, Giao diện người dùng (UI) được thiết kế.

Giờ đây, các nhà phát triển có thể thiết kế giao diện hoàn chỉnh từ đầu hoặc sử dụng lại các thiết kế do người khác tạo ra. Thiết kế tái sử dụng có một lợi thế lớn. Nó cho phép tất cả các chương trình trong máy tính của bạn trông giống nhau. Do đó, họ sử dụng bộ công cụ GUI. GTK và Qt là hai bộ công cụ GUI cực kỳ phổ biến.

GTK là bộ công cụ tiêu chuẩn cho Gnome trong khi Qt được KDE sử dụng. Từ quan điểm của người dùng, đó chỉ là vẻ ngoài khác biệt. Chương trình vẫn giữ nguyên như cũ.


4

Một khía cạnh quan trọng khác cần xem xét là liên kết cấp phép Qt với công bố giấy phép của họ , được đặt rõ ràng là có sẵn miễn phí cho hầu hết các dự án tạo ra lợi nhuận, nhưng mối quan hệ thương mại là có thể và có thể có những hạn chế cho trường hợp đó. Trong khi GTK, tuyên bố rõ ràng rằng nó có thể được sử dụng tự do ngay cả trong tuyên bố GTK của ứng dụng độc quyền :

Are there any licensing restrictions?
GTK is free software and part of the GNU Project. However, the licensing terms for GTK, the GNU LGPL, allow it to be used by all developers, including those developing proprietary software, without any license fees or royalties. 

Một khía cạnh quan trọng của phát triển GUI phức tạp sẽ dựa vào GLADE như một bộ thiết kế và liệu điều đó có liên kết với phương pháp tiếp cận của bạn hay không . Nó nhằm mục đích là đa nền tảng, nhưng có thể không được hỗ trợ rộng rãi trên nhiều nền tảng như Qt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.