Time for action – implementing the game board class
Now we will focus on our data structure. Add a new private member to ChessBoard, a vector of characters that will contain information about pieces on the board:
QVector<char> m_boardData;
Consider the following table that shows the piece type and the letters used for it:
| 
 Piece type  | 
 White  | 
 Black  | |
|---|---|---|---|
| 
 | 
 King  | 
 K  | 
 k  | 
| 
 
 
  | 
 Queen  | 
 Q  | 
 q  | 
| 
 
 
  | 
 Rook  | 
 R  | 
 r  | 
| 
 
 
  | 
 Bishop  | 
 B  | 
 b  | 
| 
 
 
  | 
 Knight  | 
 N  | 
 n  | 
| 
 
 
  | 
 Pawn  | 
 P  | 
 P  | 
You can see that white pieces use upper-case letters and black pieces use lower-case variants of the same letters. In addition to that, we will use a space character (0x20 ASCII value) to denote that a field is empty. We will add a protected method for setting up an empty board based on the number of ranks and columns on the board and a boardReset() signal to inform that the position on the board has changed:
void ChessBoard::initBoard()
{
  m_boardData.fill(' ', ranks()*columns());
  emit boardReset();
}We can update our methods for setting...