Pregunta

Tengo tantas cosas en mi QGraphicsScene. La situación se Estoy creando un tablero de ajedrez, y está utilizando escena de gráficos. Por lo que el QGraphicsScene está teniendo tantos QGraphicsPixmapItems. En este momento, ¿cómo puedo conseguir el Rey.

Actualización:    En este QGraphicsScene, estoy añadiendo QGraphicsPixmapItems que no es más monedas (de mesa, rey, reina, soldados, etc) son. Ahora si quiero mover una moneda en particular decir Rey, entonces ¿Cómo puedo conseguirlo. Hay algunos métodos como el uso de iteradores. Pero ¿hay alguna manera de encontrar un QGraphicsPixmapItem en particular por su nombre.

¿Fue útil?

Solución

Cuando usted dice que necesita para obtener el Rey, ¿cómo hacer la diferencia en su programa entre el rey blanco y el negro?

Si usted necesita para obtener un peón, ¿cómo saber cuál? Cualquier persona? La primera de ellas se pueden encontrar en sus artículos?

No he pensado mucho en ello, pero tal vez lo que puede hacer es usar un QMap. La clave sería una enumeración de las diferentes piezas y el valor sería un puntero a la QGraphicsItem relevante. Algo como esto:

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

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

Cuando se va a crear su escena y instanciando sus piezas, se llenará el mapa:

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

Cuando usted necesita para encontrar el objeto que corresponde al rey blanco, que podría hacer algo como esto:

QGraphicsPixmapItem* pItem = WhitePiecesItem[KING];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top