QT - في QGraphicsscene كيفية التقاط عنصر معين
-
28-09-2019 - |
سؤال
لدي أشياء كثيرة في بلدي QGraphicsScene
. الموقف هو أنني أقوم بإنشاء لوحة شطرنج ، وأستخدم مشهد الرسومات. لذلك QGraphicsScene
هو وجود الكثير QGraphicsPixmapItems
. الآن في هذا كيف يمكنني الحصول على الملك.
تحديث:في هذا QGraphicsScene
, ، أنا أضيف QGraphicsPixmapItems
التي ليست سوى عملات معدنية (مجلس ، الملك ، الملكة ، الجنود ، إلخ). الآن إذا كنت أرغب في نقل عملة معدنية معينة ، قل كينج ، فكيف يمكنني الحصول عليها. هناك بعض الطرق مثل استخدام المتكررين. ولكن هل هناك أي طريقة للعثور على معين QGraphicsPixmapItem
باسمه.
المحلول
عندما تقول أنك بحاجة إلى الحصول على الملك ، كيف يمكنك إحداث الفرق في برنامجك بين الملك الأبيض والأسود؟
إذا كنت بحاجة إلى الحصول على البيدق ، كيف تعرف أي واحد؟ أي واحد ؟ أول واحد يمكنك العثور عليه في العناصر الخاصة بك؟
لم أفكر كثيرًا في ذلك ، ولكن ربما ما يمكنك فعله هو استخدام QMAP. سيكون المفتاح عبارة QGraphicsItem
. شيء من هذا القبيل :
enum Piece_e {
KING,
QUEEN,
ROOK1,
ROOK2,
...
PAWN1,
PAWN2,
...
};
QMap<Piece_e, QGraphicsPixmapItem*> WhitePiecesItems;
QMap<Piece_e, QGraphicsPixmapItem*> BlackPiecesItems;
عندما تقوم بإنشاء مشهدك وتثبيت القطع الخاصة بك ، ستملأ الخريطة:
...
WhitePiecesItem[KING] = new QGraphicsPixmapItem(QPixmap("whiteking_pic"));
WhitePiecesItem[PAWN1] = new QGraphicsPixmapItem(QPixmap("whitepawn_pic"));
...
BlackPiecesItem[QUEEN] = new QGraphicsPixmapItem(QPixmap("whitequeen_pic"));
BlackPiecesItem[PAWN1] = new QGraphicsPixmapItem(QPixmap("whitepawn_pic"));
...
عندما تحتاج إلى العثور على الكائن المقابل للملك الأبيض ، يمكنك أن تفعل شيئًا كهذا:
QGraphicsPixmapItem* pItem = WhitePiecesItem[KING];