Well you could for instance use a class, which derives from
sf::Drawable and a has a sprite as a member. Then you get a
std::vector of your class and fill it with instance of your class, which get initialized to a certain position. Now you add a function to your class that will change the cell's state (covered, empty, number, mine) which moves the texture rect to the correct position. Tada you got a nice grid which you can easily change the state. You now only have to determine where the user clicks and react to it accordingly.