What you are doing is call setPlayerNation and pass the return value of the function (void in this case) as parameter to the connect function.
It should be like this (assuming mapManager is an object of type MapManager)
countryPicture->connect("pressed", &MapManager::setPlayerNation, mapManager);
Since the function takes an int you actually have to do this:
countryPicture->connect("pressed", &MapManager::setPlayerNation, mapManager, mapManager->getNation(i));
But this will call getNation immediately and call setPlayerNation with a copy of that int. So if the nation changes after calling the connect function then the value passed as parameter isn't changed. So instead you could bind that function call so that getNation gets called when the setPlayerNation is being called.
countryPicture->connect("pressed", &MapManager::setPlayerNation, mapManager, std::bind(&MapManager::getNation, mapManager, i));
You should read the "Connecting member functions" section on
this page for a good explanation on how to bind member functions.
You might also want to look up how std::bind works. If you hesitate how the parameters of the connect function are supposed to be, all the parameters after the first string are just directly passed to std::bind so if you know how it works then you also know what to pass to the connect function. With the exception that you can pass less parameters to the connect function which leads to trying to bind them internally.