GTK และ QT ต่างกันอย่างไร


29

โปรดอดทนกับฉันเนื่องจากฉันเป็นผู้ใช้ใหม่สำหรับ Linux ฉันเขียนโปรแกรม GUI ในREALbasicบน Mac มาหลายปีแล้ว ฉันพยายามเรียนรู้ Python และฉันต้องการเขียนแอพ GUI สำหรับ Linux (โดยหลักคือ Ubuntu และ Mint เนื่องจากเป็น distros ที่ฉันสามารถเข้าถึงได้และดูเหมือนจะเป็นที่นิยมที่สุด) โดยทั่วไปฉันมีคำถามสามข้อ:

  1. มีความแตกต่างที่สำคัญระหว่าง GTK และ QT หรือไม่
  2. ฉันเล่นด้วยquicklyและGladeบน Ubuntu แต่ฉันเข้าใจว่ามันใช้ GTK 2 และตอนนี้ล้าสมัยแล้ว ถูกต้องหรือไม่
  3. มีเครื่องมือแก้ไขแบบ all-in-one ที่ให้ฉันออกแบบ GUI แล้วเพิ่มรหัสหลามหรือไม่ (ตัวอย่างเช่นเพิ่มปุ่มในหน้าต่างในตัวแก้ไขดับเบิลคลิกที่ปุ่มจากนั้นเพิ่มรหัสไพ ธ อนที่จะดำเนินการเมื่อกดปุ่ม)

ขออภัยหากคำถามเหล่านี้เป็นคำถามที่โง่จริง ๆ แต่ฉันต้องการเริ่มเรียนรู้เครื่องมือ 'ถูกต้อง' ตั้งแต่เริ่มต้น


2
ตอนนี้ฉันไม่มีเวลาตอบคำถามของคุณ แต่ฉันสามารถชี้แจงบางอย่างได้ Glade เคยเป็นทั้งไลบรารีรูปแบบสำหรับไฟล์นิยาม UI และแอปพลิเคชันเพื่อสร้างไฟล์. glade เหล่านั้น ตอนนี้เราใช้ GtkBuilder สำหรับรูปแบบ Glade ที่ใช้ในการทำสิ่งนั้นและสร้างขึ้นใน GTK Glade แอปพลิเคชั่นใช้เป็นเครื่องมือที่ยอดเยี่ยมในการสร้างไฟล์. ui สำหรับ GtkBuilder (หรือเพื่อทดสอบเลย์เอาท์ที่แตกต่างกัน) และ Glade 3.x ทำ Gtk3 ได้อย่างแน่นอน - แม้ว่าทุกอย่างจะไม่อยู่ในนั้น
Dylan McCall

นั่นเป็นประโยชน์อย่างมาก ดังนั้นถ้าฉันตัดสินใจใช้ GTK เป็นชุดเครื่องมือของฉันฉันจะใช้ Glade เพื่อออกแบบเลย์เอาต์และเครื่องมืออื่นเพื่อเชื่อมโยงรหัส Pyhton และการออกแบบ UI - ถูกต้องหรือไม่
Nootrino

ใช่และเครื่องมือนั้นเป็นส่วนหนึ่งของ GTK ดังนั้นจึงมีการบันทึกไว้ที่นี่: developer.gnome.org/gtk3/3.1/GtkBuilder.htmlฉันกำลังเชื่อมโยงคุณกับเอกสาร C เนื่องจากมีรายละเอียดค่อนข้างดีและเมื่อคุณใช้ PyGObject ความแตกต่างที่แท้จริงเท่านั้นจะเป็นไวยากรณ์ ใน Python ชื่อและสิ่งของจะมีหน้าตาดังนี้: valadoc.org/gtk+-3.0/Gtk.Builder.html
Dylan McCall

คำตอบ:


12

ฉันจะพยายามตอบคำถามของคุณโดยไม่ไปในทิศทางที่บ้าคลั่ง

  1. มีความแตกต่างอย่างมีนัยสำคัญแม้ว่าจะเป็นทั้งวิดเจ็ต libs ปกติ GTK + ขึ้นอยู่กับ C และ QT ใน C ++ แม้ว่าจะมีการเชื่อมโยงสำหรับเกือบทุกภาษาโปรแกรม

  2. คุณค่อนข้างถูกต้องเกี่ยวกับ GTK2 แม้ว่าจะมีแอปพลิเคชัน GTK2 มากมาย ฉันคาดหวังว่า GTK2 จะใช้งานได้ระยะหนึ่งเหมือนกับ GTK1 เมื่อผลักเข้ามาดัน GTK2 จะถูกคัดค้านและหากคุณกำลังเริ่มใช้งาน GTK3 ใหม่

  3. Remeber GTK และ QT เป็นเพียงชุดเครื่องมือ ตัวอย่างเช่น ... แอปพลิเคชัน Gnome ใช้ GTK และ Gnome-Libs ถ้าคุณต้องการสิ่งนั้นลองดูวาลา มันถือว่าง่ายวาลาคอมไพล์ซอร์สโค้ดกับซอร์สโดยตรงกับ C และมีการเชื่อมโยงอย่างสมบูรณ์สำหรับภาษาการเขียนโปรแกรมจำนวนมาก คุณอาจต้องการดู Anjuta เพียงแค่ทำให้แน่ใจว่าคุณมี gtk3 รุ่นใหม่แล้ว เห็นได้ชัดว่าช่องแคบ PyGTK รองรับ GTK2 เท่านั้นในปัจจุบันที่ฉันตรวจสอบล่าสุด หากคุณต้องการหลีกเลี่ยง lib DE Linux ทั้งหมดฉันขอแนะนำให้ดูที่ QT QT ธรรมดาแตกต่างจากแอปพลิเคชัน KDE ซึ่งรวมถึง libs ของ KDE QT นั้นถือว่าเป็น cross-platform มากซึ่งถือว่ายอดเยี่ยมถ้าคุณต้องการคอมไพล์สำหรับ non * nix หากคุณต้องการเริ่มต้นด้วย QT + Python ดู PySide (LGPL) หรือ PyQT (GPL) QT มีผู้สร้าง GUI ที่ดีเช่น qt creator และ qt-designer


ขอบคุณสำหรับสิ่งนี้. แอนจูตาค่อนข้างจะเหมือนที่ฉันเคยเป็น ฉันจะเล่นรอบกับมันเล็กน้อย ถ้ามันไม่ถูกต้องฉันจะดู QT มันทำให้ฉันเห็นว่าทั้ง GTK และ QT บรรลุผลลัพธ์เดียวกัน - เป็นเรื่องของการตั้งค่าที่ฉันเดา
Nootrino

Qt เป็นมากกว่าเครื่องมือวิดเจ็ต มันเป็นทั้งเฟรมเวิร์กการจำลองชิ้นใหญ่ของ STL และ Boost
scottl

@scottl ฉันไม่ได้พยายาม จำกัด QT แม้ว่า QT จะมีความสามารถมากกว่าวิดเจ็ต แต่ในบริบทนั้นกลายเป็นส่วนหนึ่งของโซลูชันที่มีศักยภาพ
JM Becker

@Nootrino: คุณต้องจำไว้ในโลกของ FLOSS มักจะมีวิธีแก้ไขมากกว่าหนึ่งวิธี เหตุผลที่หลายคนเลือกอย่างใดอย่างหนึ่งขึ้นอยู่กับ C เทียบกับของพวกเขายืน C + + แน่นอนว่าใบอนุญาตมีบทบาทสำคัญในอดีต ไม่ว่าจะมีกรอบงานอื่นในหลายภาษาคุณมักจะเห็นด้วยกับวิธีการหนึ่ง
JM Becker

@Nootrino: ฉันดีใจที่ฉันสามารถช่วยได้จริง!
JM Becker

5

GTK และ Qt เป็นชุดเครื่องมือ User Interface ข้ามแพลตฟอร์มแบบโอเพ่นซอร์สและกรอบการพัฒนา นี่เป็นสองเฟรมเวิร์กที่ได้รับความนิยมสูงสุดที่ใช้งานกับลีนุกซ์เพราะเป็นโอเพ่นซอร์สและมอบชุดเครื่องมือที่ทรงพลังสำหรับนักออกแบบในการออกแบบ Graphical User Interfaces GTK ใช้เป็นชุดเครื่องมือมาตรฐานสำหรับสภาพแวดล้อมเดสก์ท็อป GNOME, LXDE และ Xfce ในขณะที่ Qt ใช้สำหรับ KDE

หากคุณใช้รหัสใน C ให้ไปที่ GTK +

หากคุณใช้รหัสใน C ++ ไปที่ Qt มิฉะนั้นคุณจะต้องใช้ Gtkmm (ตัวห่อหุ้ม C ++ บน GTK +)

หากคุณใช้รหัสใน Python ทั้ง GTK + และ Qt มีการเชื่อมโยงกับภาษา: ดู PyGtk, PyQt และ PySide (ตัวหนึ่งที่เปิดตัวโดย Nokia เอง)


หากคุณใช้ Python PyGTK จะเลิกใช้แล้ว สำหรับโครงการใหม่คุณจะดีขึ้นมากในการใช้ PyGObject (python-gobject ในที่เก็บของ Ubuntu): live.gnome.org/PyGObject PyGObject PyGObject ช่วยให้คุณเชื่อมต่อกับไลบรารีใด ๆ ที่สร้างขึ้นบน GLib (เช่น GTK) ผ่าน Python โดยไม่มีเลเยอร์เพิ่มเติม คุณได้รับอะไรมากอย่าง PyGTK แต่มันเกี่ยวกับมันแตกต่างกันมาก และแน่นอน PyGObject เป็นวิธีเดียวที่จะพูดคุยกับ GTK3 ผ่าน Python
Dylan McCall

-2

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


5
QT เป็นชุดเครื่องมือข้ามแพลตฟอร์มซึ่งไม่เพียง แต่ใช้ใน KDE เท่านั้นและเป็น GTK และโปรดงดเว้นการเขียนคำว่า "txt lik dis" ...
Uri Herrera
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.