موضع QGraphicsItem في المشهد
-
21-12-2019 - |
سؤال
أنا أعمل على تطبيق 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()
.
لا تنتمي إلى StackOverflow