سؤال

أنا أعمل على تطبيق QT 5.3 Widget على نظام التشغيل MAC OS X 10.9 وقد واجهت مشكلة.

في برنامجي عندي QGraphicsView view تحتوي QGraphicsScene scene يحتوي على QGraphicsEllipseItem parent الذي أستخدمه كوالد (لتتبع) للآخرين QGraphicsEllipseItem, ، دعنا نسمي هذا القطع الناقص الأخير child.

الآن، أود الحصول على منصب child على صلة قربى ب scene.

كلما أحاول الوصول إلى الإحداثيات في المشهد الآن، فإنه يعود [0,0]:

 QGraphicsItem * parent;
 QGraphicsScene * scene;
 ....
 parent = new QGraphicsEllipseItem(0,0,0,0);
 scene = new QgraphicsScene();
 scene.addItem(parent);
 ....
 new QGraphicsItem(12,12,10,10,parent);      //shown in the scene

 qDebug() << parent->childItems()[0].scenepos(); //returns [0,0]
 qDebug() << parent->childItems()[0].pos();      //returns [0,0]

كيفية الحصول على إحداثيات العنصر بالنسبة للمشهد؟

لقد قرأت بعض البرامج التعليمية حول هذه النقطة ولكنني أضيع فيها أو لا أفهمها (اللغة الإنجليزية ليست لغتي الأم).

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

المحلول

حاول ضبط موضع العنصر باستخدام الوظيفة setPos().

الوظيفة التي تستخدمها للحصول على موضع المشهد صحيحة scenePos() أو يمكنك أيضًا استخدامه mapToScene().

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