واجهة المستخدم الرسومية المشفرة يدويًا مقابل واجهة المستخدم الرسومية لمصمم Qt [مغلق]

StackOverflow https://stackoverflow.com/questions/387092

سؤال

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

أنا شخصياً وجدت أن كتابة التعليمات البرمجية يدويًا كانت أبسط من الناحية النظرية من استخدام Qt Designer، على الرغم من أن المصمم قد يكون منطقيًا بالنسبة لواجهات المستخدم الرسومية المعقدة.قد يكون من الممكن استخدام واجهات المستخدم الرسومية الكبيرة باستخدام المصمم، ولكن مع مرور الوقت قد تصبح إدارتها صعبة للغاية مع زيادة التعقيد (هذا مجرد رأيي).لقد قمت أيضًا بتنزيل كود مصدر AmaroK لإلقاء نظرة خاطفة على ما كان يفعله هؤلاء الأشخاص، ووجدت العديد من الاستدعاءات لـ addWidget() والأصدقاء، ولكن لم يتم إنشاء أي من ملفات XML هذه بواسطة Designer (جانبًا:يجب أن يكون AmaroK هو تطبيقي المفضل على الإطلاق على أي منصة).

ما هي إذن الطريقة "الصحيحة" لإنشاء واجهة المستخدم الرسومية؟مصمم أو رمز؟دعونا، في هذه المناقشة، نفكر في الأنواع التالية من واجهات المستخدم الرسومية:

  1. مربعات حوار بسيطة تحتاج فقط إلى أخذ مدخلات وإظهار بعض النتائج والخروج.لنفترض أن أحد التطبيقات يأخذ عنوان URL على YouTube ويقوم بتنزيل الفيديو على القرص الصلب الخاص بالمستخدم.نوع التطبيقات التي من المرجح أن يبدأ بها المبتدئ.
  2. واجهات المستخدم الرسومية ذات المستوى المتوسط، مثل، على سبيل المثال، محرر الملاحظات اللاصقة مع عدد قليل من عناصر شريط الأدوات/القائمة.لنأخذ xPad على سبيل المثال (http://getxpad.com/).أود أن أقول أن معظم التطبيقات تندرج في فئة "المرافق".
  3. واجهات المستخدم الرسومية المعقدة للغاية، مثل AmaroK أو OpenOffice.أنت تعرفهم عندما تراهم لأنهم يجعلون عيناك تنزف.
هل كانت مفيدة؟

المحلول

بدأت تجربتنا مع المصمم في Qt3.

كيو تي 3

في تلك المرحلة، كان برنامج Designer مفيدًا بشكل أساسي في إنشاء التعليمات البرمجية التي يمكنك تجميعها بعد ذلك في تطبيقك.لقد بدأنا في الاستخدام لهذا الغرض ولكن مع كل التعليمات البرمجية التي تم إنشاؤها، بمجرد تحريرها، لم يعد بإمكانك الرجوع إليها وإعادة إنشائها دون فقدان تعديلاتك.انتهى بنا الأمر بأخذ الكود الذي تم إنشاؤه والقيام بكل شيء يدويًا من الآن فصاعدًا.

كيو تي 4

لقد تحسن Qt4 على المصمم بشكل ملحوظ.لم يعد يقوم فقط بإنشاء التعليمات البرمجية، ولكن يمكنك التحميل ديناميكيًا في ملفات المصمم (بتنسيق XML) و قم بتوصيلها ديناميكيًا بالكائنات قيد التشغيل في برنامجك -- لا توجد تعليمات برمجية تم إنشاؤها، ومع ذلك، يتعين عليك تسمية العناصر في برنامج Designer والالتزام بالأسماء حتى لا تتعطل التعليمات البرمجية الخاصة بك.

تقييمي هو أنه ليس مفيدًا مثل Interface Builder على نظام التشغيل Mac OS X، ولكن في هذه المرحلة، يمكنني رؤية استخدام ملفات المصمم مباشرةً في البرنامج.

لم ننتقل مرة أخرى إلى برنامج Designer منذ Qt3، لكننا لا نزال نستخدمه لإنشاء نماذج أولية وتصحيح الأخطاء للتخطيطات.

لمشاكلك:

  1. ربما يمكنك الابتعاد عن استخدام مربعات الحوار القياسية التي تقدمها Qt.QInputDialog أو إذا كنت تنتمي إلى فئة فرعية QDialog، فتأكد من استخدامها QButtonDialogBoxللتأكد من أن الأزرار الخاصة بك تتمتع بالتخطيط المناسب للنظام الأساسي.

  2. ربما يمكنك القيام بشيء أكثر محدودية مثل xPad بوظائف المصمم المحدودة.

  3. لا أعتقد أنه يمكنك كتابة شيء مثل OpenOffice باستخدام برنامج Designer فقط، ولكن ربما ليس هذا هو الهدف.

سأستخدم برنامج Designer كأداة أخرى، تمامًا مثل محرر النصوص الخاص بك.بمجرد العثور على القيود، جرب أداة مختلفة لهذه المشكلة الجديدة.أنا أتفق تمامًا مع Steve S في أن إحدى ميزات المصمم هي أن شخصًا آخر ليس مبرمجًا يمكنه القيام بالتخطيط.

نصائح أخرى

في تجربتي مع Qt Designer ومجموعات الأدوات/أدوات واجهة المستخدم الأخرى:

  • تعمل أدوات واجهة المستخدم على تسريع العمل.
  • تسهل أدوات واجهة المستخدم تعديل التخطيط لاحقًا.
  • أدوات واجهة المستخدم تجعل من السهل/الممكن لغير المبرمجين العمل على تصميم واجهة المستخدم.

غالبًا ما يمكن التعامل مع التعقيد في أداة واجهة المستخدم عن طريق تقسيم التصميم إلى ملفات واجهة مستخدم متعددة.قم بتضمين مجموعات منطقية صغيرة من المكونات في كل ملف وتعامل مع كل مجموعة كعنصر واجهة مستخدم واحد يُستخدم لإنشاء واجهة المستخدم الكاملة.يمكن أن يساعد مفهوم Qt Designer الخاص بالأدوات المصغّرة في هذا الأمر.

لم أجد أن حجم المشروع يحدث أي فرق.قد تختلف تجربتك.

الملفات التي تم إنشاؤها باستخدام أدوات واجهة المستخدم (أعتقد أنه يمكنك كتابتها يدويًا إذا كنت تريد ذلك حقًا) غالبًا ما يتم تحميلها ديناميكيًا في وقت التشغيل (يوفر كل من Qt وGTK+ هذه الميزة).هذا يعني أنه يمكنك إجراء تغييرات على التخطيط واختبارها دون إعادة الترجمة.

في النهاية، أعتقد أن كلاً من التعليمات البرمجية الأولية وأدوات واجهة المستخدم يمكن أن تكون فعالة.ربما يعتمد الأمر كثيرًا على البيئة ومجموعة الأدوات/أداة واجهة المستخدم وبالطبع التفضيل الشخصي.أحب أدوات واجهة المستخدم لأنها تساعدني على العمل بسرعة وتسمح بإجراء تغييرات سهلة لاحقًا.

قامت المنظمة التي أعمل بها بنقل تطبيق واجهة المستخدم الرسومية الخاص بها إلى Qt منذ عدة سنوات.أعتقد أن هناك عدة جوانب تستحق الذكر:

  • لم يكن العمل مع Qt Designer، على الأقل في تلك المرحلة، خيارًا واقعيًا:كان هناك الكثير من الميزات التي لا يمكن تنفيذها باستخدام Qt Designer؛
  • الاتفاقيات والبنية التي كان يجب الحفاظ عليها منعت استخدام Qt Designer؛
  • بمجرد البدء بدون برنامج Designer، قد يكون من الصعب العودة إليه؛
  • لكن الجانب الأكثر أهمية هو أن المبرمجين كانوا معتادين جدًا على البرمجة باستخدام vi أو emacs، بدلاً من استخدام GUI IDE.

تجربتي الخاصة، والتي تعود تقريبا.4 سنوات، باستخدام Qt3.3، هو أنه لم يكن من الممكن تحقيق السلوك الديناميكي في مربعات الحوار في برنامج Designer.

فقط لأقول إنني كتبت وحافظت على واجهات المستخدم الرسومية المعقدة في Qt دون استخدام Qt Designer - ليس لأنني لا أحب Qt Designer، ولكن لأنني لم أتمكن مطلقًا من العمل بهذه الطريقة.

إنها مسألة أسلوب ومن أين أتيت:عندما بدأت استخدام Qt، كانت لدي تجارب مروعة مع Dreamweaver وFrontpage وأدوات HTML المرئية الأخرى، وكنت أفضل كتابة التعليمات البرمجية باستخدام HomeSite واللجوء إلى Photoshop لحل مشكلات التخطيط الصعبة.

هناك خطر في معرفات IDE للكود المرئي التي تحاول الاحتفاظ بها داخل الأدوات المرئية، ولكن ينتهي بك الأمر إلى تعديل التعليمات البرمجية أيضًا - بطرق غير مفهومة جيدًا.

تعلم تطوير iPhone، على سبيل المثال، وجدت أنه من المحبط أن أضغط على العناصر المرئية "السحرية" ("اسحب من الدائرة الفارغة في مفتش الاتصالات إلى الكائن في نافذة Interface Builder...") التي قد تكون أبسط (بالنسبة لـ أنا) لفهم الكود القديم البسيط.

حظًا سعيدًا مع Qt - إنها مجموعة أدوات رائعة، كيفما كنت تستخدمها، ويبدو أن Qt Creator هو IDE رائع.

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

منذ أن انتقلت من دلفي إلى جافا لتطبيقات واجهة المستخدم الرسومية (في عام 2002)، لم أستخدم المصممين أبدًا.أنا أحب مديري التخطيط أكثر من ذلك بكثير.ونعم، يمكنك الحصول على رمز معياري، ولكن تحريك الكائنات على مصمم واجهة المستخدم قد يستغرق وقتًا طويلاً مثل تغيير النموذج المعياري.بالإضافة إلى ذلك، سأكون عالقًا في بيئة تطوير متكاملة (IDE) بطيئة؛هذا بالنسبة لحالة Java/C#، حسنًا، بينما بالنسبة لـ Qt (خاصة Qt4) لا ينطبق ذلك.بالنسبة لـ Qt3، أتساءل لماذا يجب على المرء تعديل التعليمات البرمجية التي تم إنشاؤها - ألم يكن من الممكن إضافة تعليمات برمجية في ملفات أخرى؟لهذا السبب؟

حول القضايا التي تمت مناقشتها:1) من المحتمل أن تكون واجهة المستخدم الرسومية المرمزة يدويًا أسرع في الكتابة، على الأقل إذا كنت تعرف مكتباتك.إذا كنت مبتدئًا ولا تعرفهم، فيمكنك توفير الوقت وتعلم أقل مع المصمم، نظرًا لأنك لا تحتاج إلى تعلم واجهات برمجة التطبيقات التي تستخدمها.لكن "تعلم أقل" هو العامل الرئيسي، لذلك في كلتا الحالتين أود أن أقول واجهة المستخدم الرسومية المرمزة يدويًا.

2) أشرطة القوائم مزعجة للغاية عند كتابة التعليمات البرمجية لها.فكر أيضًا في التفاصيل مثل المسرعات وما إلى ذلك.ومع ذلك، يعتمد الأمر على ما اعتدت عليه.بعد مرور بعض الوقت، قد يكون من الأسرع كتابة هذا النموذج بدلاً من الإشارة والنقر فوق المصمم لإصلاح كل هذه الخصائص، ولكن فقط إذا كان بإمكانك حقًا الكتابة في الآلة الكاتبة (مثل هؤلاء المسؤولين الذين تكون كتابة أوامر Unix أسرع من باستخدام أي واجهة المستخدم الرسومية).

3) سأقوم بتوسيع إجابة الحالة رقم 2 إلى هذه الحالة.لاحظ أنه بالنسبة لمنصات Win32، قد يكون من الممكن استخدام المصممين الذين يقومون بإنشاء موارد Win32 قد يكون أسرع في التحميل (لا توجد فكرة عن ذلك).

ومع ذلك، أود أن أذكر مشكلة محتملة في استخدام Qt Designer هناك.حالة العالم الحقيقي:استغرق الأمر بضع ثوانٍ (على سبيل المثال 10) لتحميل مربع حوار Java معقد (مربع حوار التفضيلات لمحرر نصوص المبرمج) مع الكثير من الخيارات.كان الحل الصحيح هو تحميل كل علامة تبويب فقط عندما يريد المبرمج رؤيتها (أدركت ذلك بعد ذلك)، وذلك عن طريق إضافة طريقة منفصلة لكل مجموعة تفضيلات لإنشاء واجهة المستخدم الرسومية الخاصة بها.

إذا قمت بتصميم كافة علامات التبويب ومبدل علامات التبويب مع أحد المصممين، فهل يمكنك القيام بذلك بسهولة؟أعتقد أنه قد يكون هناك مثال مشابه حيث تمنحك واجهة المستخدم الرسومية المشفرة يدويًا مزيدًا من المرونة، وفي مثل هذا التطبيق الكبير، من المحتمل أن تحتاج إلى ذلك، حتى لو كان ذلك لأغراض التحسين فقط.

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

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

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

بعد قولي هذا، أقوم بتنفيذ النافذة الرئيسية وأي عناصر واجهة مستخدم معقدة يدويًا.أعتقد أن هذه هي الطريقة التي قصدتها ترولتيك. QFormLayout هي فئة يقدمونها لإنشاء مربع حوار إدخال بسهولة برمجيًا.

بالمناسبة، المصمم في Qt 4 ليس IDE مثل الذي كان موجودًا في Qt 3.إنه مجرد محرر لتحرير ملفات .ui.أحبها بتلك الطريقة.سيتم تسمية IDE الجديد عبر النظام الأساسي باسم Qt Creator.

إنه منشور قديم ولكن أنصحك بإلقاء نظرة على Clementine - وهو مشغل موسيقى (على ما أعتقد) مستمد من Amarok.إنهم يستخدمون Qt4 ومن ما أستطيع رؤيته يوجد ملف ui مجلد في src مجلد المشروع.في ال ui المجلد كما قد يتوقع المرء أنه يحتوي على جميع أنواع ملفات .ui.إذا قمت بتجميع برنامج Clementine وتشغيله، فسوف ترى أن واجهة المستخدم الرسومية معقدة إلى حد ما وجميلة جدًا.

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

إذا كان يحتوي على فحوصات أو تفاعلات معقدة، فأنا أميل إلى برمجته.

نحن نستخدم Qt Designer إذا كان أي شخص يحتاج إلى إنشاء واجهة مستخدم رسومية.
يتمثل الأمر في إنشاء عناصر واجهة مستخدم صغيرة فقط لمهام معينة (كما تفعل في تصميم الفصل الدراسي) ثم تجميعها معًا في "واجهة المستخدم الرسومية".

بهذه الطريقة تكون عناصر واجهة المستخدم الخاصة بك قابلة لإعادة الاستخدام بشكل كبير ويمكن استخدامها لـ Guis بطريقة معيارية.عليك فقط تحديد الإشارات التي ترسلها كل أداة والفتحات التي توفرها.

نقوم أيضًا بإنشاء ملفات .ui التي يمكن إنشاؤها أثناء عملية الإنشاء.حتى الآن لم تكن هناك حاجة لتحرير هذه الملفات يدويًا.

قم ببناء أجزاء مختلفة من واجهة المستخدم الخاصة بك
في ملفات .ui مختلفة باستخدام QtDesigner،
ثم اجمعهم معًا (وأضف تعقيدات) في التعليمات البرمجية.

هناك أشياء لا يمكنك القيام بها في Qt Designer، يمكنك القيام بها فقط في التعليمات البرمجية،
لذا فإن Qt Designer هو مجرد جزء واحد (رائع) من سلسلة الأداة.

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