استخدام العناصر في خلفية QGraphicsscene
-
22-09-2019 - |
سؤال
لدي QGraphicsscene حيث رسمت في البداية الخلفية في وظيفة العيب (). ومع ذلك ، فإن هذا يتطلب عددًا قليلاً من الحسابات واتضح أنه بطيء جدًا ، لذا قمت بإنشاء مجموعة من العناصر بدلاً من ذلك. كان هذا التسريع المتوقع.
سؤالي: هل هناك طريقة لعلاج هذه العناصر كخلفية؟ هل يهم حتى لو تعاملت معهم كعناصر خلفية؟
شكرًا
المحلول
هناك ثلاث طبقات من حيث QGraphicsScene (انظر مستندات QT):
- QGraphicsScene :: Itemlayer
طبقة العنصر. يقوم QGraphicsscene بإعداد جميع العناصر في هذه الطبقة عن طريق استدعاء الوظيفة الافتراضية DrawItems (). يتم رسم طبقة العنصر بعد طبقة الخلفية ، ولكن قبل طبقة المقدمة.
- QGraphicsscene :: backgroundlayer
طبقة الخلفية. يقوم QGraphicsscene بإعداد خلفية المشهد في هذه الطبقة عن طريق استدعاء عيب الوظيفة الافتراضية (). يتم رسم طبقة الخلفية أولاً وقبل جميع الطبقات.
- QGraphicsscene :: Foregroundlayer
طبقة المقدمة. يقوم QGraphicsscene بإعداد مقدمة المشهد في هذه الطبقة عن طريق استدعاء الوظيفة الافتراضية DrawForeground (). يتم رسم الطبقة الأمامية أخيرًا عن جميع الطبقات.
ثير ، لا يوجد قانوني طريقة لوضع عنصر في طبقة الخلفية. ومع ذلك ، يمكنك استخدام فرز QGraphicsItem لوضع بعض العناصر خلف الآخرين ، مما يجعلها تظهر على أنها أ معرفتي.