แอพพลิเคชั่น GTK และ QT ต่างกันอย่างไร


54

แพ็คเกจจำนวนมากมีให้เลือกทั้งรุ่น GTK และ QT

  • ความแตกต่างระหว่างพวกเขาคืออะไร
  • ประสิทธิภาพหรือวิธีการทำงานมีความแตกต่างหรือไม่?

คำตอบ:


41

โดยทั่วไปแล้วความแตกต่างจากมุมมองของผู้ใช้ควรเป็นเครื่องสำอางอย่างหมดจด Qt และ GTK ตั้งค่าธีมอย่างอิสระ (ผ่าน, เช่น, qtconfigหรือgtk-chtheme) แต่สิ่งนี้มีความกลมกลืนกับสภาพแวดล้อมเดสก์ทอปบางประเภท

GNU / Linux มีแนวโน้มที่จะเป็น GTK ที่มุ่งเน้นมากกว่า Qt ในแง่ที่ว่าอดีตนั้นถูกใช้งานบ่อยกว่าดังนั้นคุณอาจต้องการที่จะชอบมันเมื่อได้รับตัวเลือก ข้อยกเว้นจะอยู่ภายใต้ KDE ซึ่งใช้ Qt สำหรับแอปพลิเคชันของตนเอง - แม้ว่าปัจจัยเหล่านี้จะไม่มีความสำคัญมาก

ปัญหาที่สำคัญกว่านั้นจะอยู่ในบริบทที่มี RAM จำกัด มาก (ดังเช่น <1/4 GB) ในกรณีนี้คุณอาจต้องการให้ระบบใช้เฉพาะ GTK หรือ Qt แต่ไม่ใช่ทั้งสองอย่าง บนเดสก์ท็อปที่ทันสมัยที่สุดที่มีหน่วยความจำกิกะไบต์อย่างไรก็ตามนี่ไม่ใช่ปัญหา - การใช้ทั้งสองอย่างอาจทำให้คุณเสียค่าใช้จ่ายเพิ่ม (เดาได้เลย) 50-100 MB


โปรดทราบว่ามีทั้งรุ่น GTK (2 และ 3) และ Qt (3 และ 4) ที่แตกต่างกัน แต่ยังคงใช้กันอย่างแพร่หลาย แต่ไม่รองรับการย้อนกลับ (ดังนั้นแอปพลิเคชัน Qt 3 ไม่สามารถใช้ไลบรารี Qt 4) อย่างไรก็ตามทั้งสองเวอร์ชันอาจมีอยู่ในระบบในเวลาเดียวกันและผลลัพธ์ที่ร้ายแรงที่สุดคือความสับสนและหน่วยความจำเพิ่มขึ้นอีกเล็กน้อย


8
ฉันสนใจเป็นอย่างยิ่งที่จะรู้ว่าคุณสรุปว่า Linux เป็น GTK ที่มุ่งเน้นมากขึ้นได้อย่างไร Linux โดยทั่วไปหมายถึงเฉพาะเคอร์เนล Linux ซึ่งโดยทั่วไปไม่มีอคติต่อชุดเครื่องมือทั้งสองเนื่องจากเป็นเคอร์เนลระบบปฏิบัติการไม่ใช่โปรแกรมผู้ใช้ GUI GUI หากคุณหมายถึง GNU / Linux เป็นระบบปฏิบัติการฉันจะยังคงโต้แย้งการอ้างสิทธิ์ของคุณ พูดได้ว่า GNU / Linux นั้นเป็น GTK ที่มุ่งเน้นมากกว่าเพราะ Ubuntu เป็น distro ที่ได้รับความนิยมมากที่สุดเช่น Christiano Ronaldo เป็นนักกีฬาที่ดีที่สุดเพราะฟุตบอลเป็นเกมที่เล่นกันมากที่สุดในโลก (ฉันจะโต้แย้งเช่นกัน)
darnir

10
@darnir ฉันจะใส่คำว่า "GNU" ไว้ในตัวตั้งแต่ที่ฉันพูดถึงระบบปฏิบัติการในแง่ที่เป็นภาษาพูด ฉันจะปกป้องวิทยานิพนธ์ของฉันว่ามันเป็น GTK มากกว่า Qt ที่มุ่งเน้น: GTK (ซึ่งเดิมย่อมาจาก "GIMP Tool Kit" และ GIMP = โปรแกรมจัดการรูปภาพของ GNU) GIMP และ GNOME เป็นโครงการ GNU และส่วนหลักทั้งหมด ของวิสัยทัศน์ (userland) สำหรับระบบปฏิบัติการซึ่งจับคู่กับเคอร์เนลคือ "linux" ในอดีต ดังนั้น GTK จึงได้รับการพัฒนาสำหรับลินุกซ์เป็นหลักเช่นกันคือ C (เทียบกับ C ++ ของ Qt) ในขณะที่ Qt เป็นเอนทิตีข้ามแพลตฟอร์มอย่างแท้จริง
goldilocks

1
ในขณะที่ฉันจะเห็นด้วยกับคุณเกี่ยวกับประวัติศาสตร์และนิรุกติศาสตร์ของ GTK สิ่งนี้ไม่ได้บอกเป็นนัยว่า GNU / Linux เป็น GTK ที่มุ่งเน้น ในความเป็นจริงตรงกันข้ามนั้นเป็นจริงและได้รับการยืนยันจากข้อความของคุณ GTK ถูกออกแบบมาสำหรับ linux ไม่ใช่วิธีอื่น ฉันจะปกป้องวิทยานิพนธ์ของฉันที่ระบุว่า Linux เป็นเคอร์เนลและ GNU / Linux เป็นระบบปฏิบัติการไม่เชื่อเรื่อง GUI Toolkit ใด ๆ บ่อยครั้งที่ GTK นั้นถูกพบในป่ามากกว่า Qt เนื่องจากการพึ่งพา Ubuntu อย่างหนัก นอกจากนี้ความจริงที่ว่ามันเบาในทรัพยากรระบบช่วย
darnir

3
@darnir ใช่แล้วระบบปฏิบัติการนั้นเป็นผู้ไม่เชื่อเรื่องพระเจ้า WRT ชุดเครื่องมือ GUI - ฉันจะไม่อ้างว่า GTK เป็นชุดเครื่องมือ "ดั้งเดิม" ฯลฯ แต่คุณผิดเกี่ยวกับสาเหตุที่ทำให้ "เห็นบ่อยในป่า" - GTK ชุดเครื่องมือที่ใช้กันอย่างแพร่หลายมากที่สุดบนแพลตฟอร์มก่อนที่ Ubuntu จะมีอยู่เพราะความสัมพันธ์ดังกล่าวกับส่วนพื้นฐานอื่น ๆ ที่ใช้อย่างกว้างขวางโดยdistros ทั้งหมด นี่คือเหตุผลที่แอพ linux GUI ส่วนใหญ่เป็นแอพ GTK อยู่แล้วและทำไมไม่มีบริบทเพิ่มเติมให้ดำเนินการต่อไปผู้ใช้ใหม่จึงควรบอกผู้ใช้รายใหม่ว่า "คุณอาจจะเลือกอย่างใดอย่างหนึ่งก็ได้" แต่มันก็ไม่สำคัญ
goldilocks

การใช้ชุดเครื่องมือที่แตกต่างหลากหลายจะต้องใช้พื้นที่จัดเก็บมากขึ้น ฉันไม่คิดว่ามันจะส่งผลกระทบต่อการแสดง แต่เป็นพื้นที่สำหรับสิ่งอื่น ๆ
DaimyoKirby

19

ไม่ไม่มีความแตกต่างในโครงสร้างภายในของโปรแกรมดังกล่าว GTK และ Qt เป็นชุดเครื่องมือส่วนติดต่อผู้ใช้และกรอบงาน พวกเขาเป็นห้องสมุดที่นักพัฒนาใช้ในการออกแบบส่วนต่อประสานกราฟิก

เมื่อมีการเขียนโปรแกรมกราฟิก (GUI) สิ่งแรกคือการพัฒนาหลักของ internals นี่คือสิ่งที่ทำให้โปรแกรมทำงาน คุณไม่เคยเห็นแกนพวกเขาเพียงแค่ดำเนินการในพื้นหลัง ด้านบนของคอร์นี้อินเทอร์เฟซผู้ใช้ (UI) ได้รับการออกแบบ

ตอนนี้ผู้พัฒนาสามารถออกแบบอินเตอร์เฟสที่สมบูรณ์ตั้งแต่ต้นหรือใช้การออกแบบที่ผู้อื่นทำซ้ำ การออกแบบที่ใช้ซ้ำมีข้อได้เปรียบที่สำคัญ อนุญาตให้โปรแกรมทั้งหมดในคอมพิวเตอร์ของคุณมีลักษณะคล้ายกัน ดังนั้นพวกเขาจึงใช้ชุดเครื่องมือ GUI GTK และ Qt เป็นชุดเครื่องมือ GUI ที่พบได้บ่อยมากสองชุด

GTK เป็นชุดเครื่องมือมาตรฐานสำหรับ GNOME ในขณะที่ Qt นั้นถูกใช้โดย KDE จากมุมมองของผู้ใช้เป็นเพียงรูปลักษณ์ที่แตกต่าง โปรแกรมยังคงเหมือนเดิมที่หัวใจ


4

สิ่งสำคัญอีกประการที่ควรพิจารณาคือลิงก์สิทธิ์การใช้งาน Qt ไปยังการเปิดเผยสิทธิ์การใช้งานซึ่งกำหนดไว้อย่างชัดเจนว่าสามารถใช้ได้อย่างอิสระสำหรับโครงการที่ไม่หวังผลกำไรส่วนใหญ่ แต่ความสัมพันธ์ทางการค้าเป็นไปได้และอาจมีข้อ จำกัด สำหรับกรณีดังกล่าว ในขณะที่ GTK ระบุอย่างชัดเจนว่าสามารถใช้งานได้อย่างอิสระแม้ในคำสั่ง GTK ของแอปพลิเคชันที่เป็นกรรมสิทธิ์ :

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. 

ลักษณะสำคัญของการพัฒนา GUI ที่ซับซ้อนจะพึ่งพา GLADE เป็นชุดการออกแบบและไม่ว่าจะเหมาะกับวิธีการของคุณเชื่อมโยงบึง มันมีจุดมุ่งหมายที่จะเป็นแพลตฟอร์มข้าม แต่อาจไม่ได้รับการสนับสนุนอย่างกว้างขวางข้ามแพลตฟอร์มตามที่ Qt เป็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.