سؤال

لدي أشياء كثيرة في بلدي 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];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top