سؤال

أنا أكتب برنامجا في OpenGL وأحتاج إلى نوع من شريط أدوات Interfacing. كانت ردود فعل الأولية هي استخدام واجهة المستخدم الرسومية، ثم تحقيق مزيد من التحقيق في C ++، أدركت أن واجهة المستخدم الرسومية تعتمد على نظام التشغيل الذي تستخدمه (أنا على Windows). لذلك، قررت استخدام كيو تي لمساعدتي.

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

على سبيل المثال، إذا قمت بإنشاء "لوحة تحكم" بسيطة مع الأسهم في كل اتجاه. وعلى الشاشة لدي كائن مربع تم إنشاؤه بواسطة Gath

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

المحلول

باستخدام QT متماسك لمشكلتك: يوفر تكاملا جيدا OpenGL من خلال وحدة Qtopengl.

  1. استخلاص فصول العرض الخاصة بك من QGLWidget (حتى qt 4.8) أو من QOpenGLWidget (منذ QT 5.4) وتنفيذ الأساليب الافتراضية paintGL() إلخ.
  2. سيكون لديك حق الوصول إلى نظام الإشارة والنظام QT الخاص بحيث ستتمكن من التقاط أحداث واجهة المستخدم الرسومية وتحديث عرض OpenGL.

نصائح أخرى

يمكنك استخدام الحاجيات العادية غير OpenGL كيو تي على رأس QGLWidget إذن ما تصفه هو أن تفعل ذلك.

شيء واحد صادفته عند القيام بذلك كان أن الحاجيات العادية يجب أن تكون مبهمة. في اللحظة التي كانت شفافة بأي طريقة كانت هناك كل أنواع القمامة تحتها. كان ذلك منذ فترة ربما تعالج أحدث إصدار هذه المشكلة. قد يكون منصة خاصة جدا YMMV.

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

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

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