سؤال

وهناك الكثير من الناس يبدو أن يكون لها رأي حول أيهما أفضل. أنا لا أطلب حقا لهذه الآراء، ما أود أن أعرف ما التفاصيل: ما هي الأشياء التي تجعل أدوات رسومية واحدة مختلفة عن الأخرى، والتي من هذه الاختلافات القيام كيو تي وجتك + لديهم

هل كانت مفيدة؟

المحلول

وأنا لا أستطيع التحدث مباشرة مع جتك +، ولكن في وظيفتي السابقة كنت Gtkmm، وفي وظيفتي الحالية وأنا استخدم كيو تي. كلاهما C ++، لذلك في هذا الصدد أنها متسقة، ولكن Gtkmm هو / كان مجرد المجمع إلى رمز جتك +، والتي هي في المستقيم C.

وفي الوقت تحولت وظيفة، وأذكر أن أحد الفروق الرئيسية في قانون أوي هو كيف عالجت الأدوات اثنين تخطيطات. بعض أجزاء اعتقدت جتك كان أفضل، وبعض اعتقدت كيو تي فعلت أفضل. كلا تتيح لك الحصول على الحاجيات الخاصة بك حيث تريد لهم، في نهاية المطاف.

وكان التصحيح مع Gtkmm قليلا من الألم، لأن الطبقات عموما لم تفعل أي شيء ما عدا عقد مؤشر إلى بنية وندعو جتك + وظائف. أن مستوى إضافي من indirection يمكن أن تكون مزعجة.

وكيو تي لديها مزيد من رموز التبعية التي يمكن أن تكون مفيدة في مختلف البيئات، على الأقل بالمقارنة مع إصدار Gtkmm ان كنت تستخدم. أشياء لجعل التواصل الترابط، بين العملية، وأسهل التواصل تحظى بتقدير جميع عندما كنت في حاجة لإضافة بعدا جديدا إلى البرنامج. لديهم أيضا عبواتها، إذا كنت ترغب في استخدام هذه، والتي أعتقد تحتوي على واجهة الأصح عقلا من الحاويات STL - لكنها لا عن الشيء نفسه في النهاية، حتى انها ميزة طفيفة

.

وآلية إشارة / فتحة بين Gtkmm وكيو تي مختلفة. يعتمد كيو تي في خطوة إضافية في عملية الترجمة لتوليد المعلومات الوصفية، والذي يستخدم لفي إشارة / فتحات. كائن باستخدام إشارات أو فتحات يجب أن يرث QObject، ويجب أن يكون الميراث QObject أول واحد، مع عدم وجود هيكل الماس. وهذا يجعل من الصعب تحديد واجهة المجردة التي تنبعث إشارة، على سبيل المثال. على الجانب الإيجابي، فهي على علم بطبيعتها من القضايا خيوط، وسيتم تحويل اتصال إشارة / فتحة في اتصال الحدث القائم عند الضرورة. يستخدم Gtkmm إشارات SigC، والتي هي واضحة فئات C ++، وبالنسبة لي يبدو أن تكون مفيدة في مجموعة متنوعة من الحالات. أيضا، فقط الكائنات التي إجراء اتصال تحتاج إلى ترث من الفئة الأساسية السحر، وعلى ما أذكر. بالإضافة إلى ذلك، منذ فتحات يمكن الكائنات، يمكنك استخدامها كما لطيفة جدا الأجسام functor تكيف كذلك.

وأنا متأكد من أن هناك اختلافات أخرى، ولكن هذا هو ما أذكر الآن. نضع في اعتبارنا كانت مشاركة تجربتي مع Gtkmm منذ حوالي 3 سنوات، وحتى بعض من تلك العناصر قد تغيرت الآن.

نصائح أخرى

لفهم الاختلافات، قصارى جهدها لفهم التاريخ.

وقد وضعت QT باعتباره UI، وكان بعض قضايا الترخيص في البداية عندما بدأت KDE أول من وضعها. اختار KDE QT كما لم يكن هناك الكثير من مجموعة مختارة آنذاك (الحافز، تى سى ال / تاكا على سبيل المثال لا الحصر)

ووالأعرج قد بدأت تطويرها، وفي الوقت كانت الأدوات النافذة لا يصل الى نقطة الصفر لما حاجة المطورين لذا بدأوا في كتابة مجموعة أدوات الأعرج (جتك). بعد بعض الوقت فقد تقرر إعادة كتابة GTK وجعله كائن الموجه (GTK +).

وأيضا في هذا الوقت، وذلك بسبب قضايا الترخيص المحتملة مع QT، غنوم بدأ وقرر استخدام مكتبة GTK +.

والآن إذا نظرتم الى QT تصميم و <ل أ href = "http://en.wikipedia.org/wiki/GTK٪2B#Design" يختلط = "noreferrer"> إدخالات GTK تصميم على ويكيبيديا، يمكنك البدء رؤية بعض الاختلافات بين النظم.

لاحظ أن QT يشار إليه على أنه:

<اقتباس فقرة>   

وعبر منصة إطار تطوير التطبيقات

وحين يشار GTK + على أنه:

<اقتباس فقرة>   

وعبر منصة القطعة أدوات لإنشاء واجهات المستخدم الرسومية.

إذا هي أن يعتقد هذه الإدخالات ثم أعتقد أن هو ما استطعنا الاختلافات الرئيسية بين الاثنين، ولكن أود أن أقول لها خط رفيع إلى حد ما في عالم اليوم.

وأولا وقبل كل شيء، يمكنك استخدام جتك + من C. كيو تي هو C ++ فقط.

وبالإضافة إلى ذلك، تميل جتك + التطبيقات لديك الحوارات التي تتغير باستمرار، مع زر إغلاق. كيو تي يميل إلى أن يكون على غرار طيب / تطبيق / إلغاء الأمر. أنا لا أعرف كم من هذه يتم فرض على مستوى أدوات، وإن كان.

وأما عن البرمجة، وأنا لا أعرف ما هي الآلية رد يستخدم جتك، ولكن في كيو تي إشارات فتحات آلية تماما الصخور.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top