سؤال

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

أرغب في تقديم كائن ثلاثي الأبعاد شبه شفاف أعلى الصورة ثنائية الأبعاد ، وهو شيء مثل Maya 2009 المستخدم (لاحظ المكعب في الزاوية اليمنى العليا من منفذ العرض): Maya 2009 screenshot
(مصدر: Boulevard- Creation.com)

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

خيار واحد يمكنني التفكير فيه هو جعل كل شيء فيه QGLWidget وعرض الصورة ثنائية الأبعاد كملمس على مستوى الخلفية ، ولكن هذا يبدو مؤلمًا بعض الشيء.

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

المحلول

لقد وجدت طريقة ، لكنها بطيئة جدًا: يمكنك ببساطة إضافة طريقة أخرى QGraphicsItem إلى QGraphicsScene مثله

scene->addPixmap(glWidget->renderPixmap());

يمكن أن يتم ضبط الشفافية مع QGraphicsItem::setOpacity().

يجب أن يكون هناك طريقة أسرع باستخدام QPixelBuffer, ، لكنني لم أتمكن من تقديمها بشكل صحيح حتى الآن.

نصائح أخرى

قم بتعيين منفذ عرض QGraphicsView الخاص بك على QGLWidget ، ثم في طريقة الطلاء الخاصة بك ، يمكنك استخدام مكالمات GL مباشرة لرسم كائنات ثلاثية الأبعاد الخاصة بك.

يرى http://doc.qt.io/archives/qt-4.7/qpainter.html#beginnativePainting

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