Frage

Ich habe so viele Dinge in meinem QGraphicsScene. Die Situation Ich schaffe ein Schachbrett, und wird unter Verwendung von Grafikszene. So ist die QGraphicsScene ist mit so vielen QGraphicsPixmapItems. Jetzt in diesem wie kann ich den König.

Update:    In diesem QGraphicsScene, bin ich das Hinzufügen QGraphicsPixmapItems, die nichts anderes sind als Münzen (board, König, Königin, Soldaten, etc.). Nun, wenn ich eine bestimmte Münze sagt König bewegen will, dann Wie kann ich es bekommen. Es gibt einige Methoden, wie Iteratoren verwenden. Aber ist es eine Möglichkeit, eine bestimmte QGraphicsPixmapItem durch seinen Namen zu finden.

War es hilfreich?

Lösung

Wenn Sie sagen, Sie brauchen, um den König zu bekommen, wie machen Sie den Unterschied in Ihrem Programm zwischen dem weißen König und der schwarzen?

Wenn Sie ein Pfand erhalten müssen, wie Sie wissen, welche? Anyone? Die erste, die Sie in Ihre Einzelteile finden können?

Ich habe nicht daran gedacht, viel darüber, aber vielleicht, was Sie tun können, ist eine QMap verwenden. Der Schlüssel würde eine Aufzählung der verschiedenen Stücke sein, und der Wert würde ein Zeiger auf den entsprechenden QGraphicsItem sein. So etwas wie folgt aus:

enum Piece_e {
    KING,
    QUEEN,
    ROOK1,
    ROOK2,
    ...
    PAWN1,
    PAWN2,
    ...
};

QMap<Piece_e, QGraphicsPixmapItem*> WhitePiecesItems;
QMap<Piece_e, QGraphicsPixmapItem*> BlackPiecesItems;

Wenn Sie Ihre Szene schaffen und Instanziierung Ihre Stücke, Sie verlassen nun die Karte füllen:

...
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"));
...

Wenn Sie das Objekt entsprechend den weißen König finden benötigen, können Sie etwas tun könnten:

QGraphicsPixmapItem* pItem = WhitePiecesItem[KING];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top