سؤال

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

سؤالي: هل هناك طريقة لعلاج هذه العناصر كخلفية؟ هل يهم حتى لو تعاملت معهم كعناصر خلفية؟

شكرًا

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

المحلول

هناك ثلاث طبقات من حيث QGraphicsScene (انظر مستندات QT):

  • QGraphicsScene :: Itemlayer

طبقة العنصر. يقوم QGraphicsscene بإعداد جميع العناصر في هذه الطبقة عن طريق استدعاء الوظيفة الافتراضية DrawItems (). يتم رسم طبقة العنصر بعد طبقة الخلفية ، ولكن قبل طبقة المقدمة.

  • QGraphicsscene :: backgroundlayer

طبقة الخلفية. يقوم QGraphicsscene بإعداد خلفية المشهد في هذه الطبقة عن طريق استدعاء عيب الوظيفة الافتراضية (). يتم رسم طبقة الخلفية أولاً وقبل جميع الطبقات.

  • QGraphicsscene :: Foregroundlayer

طبقة المقدمة. يقوم QGraphicsscene بإعداد مقدمة المشهد في هذه الطبقة عن طريق استدعاء الوظيفة الافتراضية DrawForeground (). يتم رسم الطبقة الأمامية أخيرًا عن جميع الطبقات.

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

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