The way we do it is that events are "consumed" by objects when they use them. If it is consumed, it isn't sent any further down the line.
Each object has an EventHandler (just a small class), and if an event makes it all the way down to that object, its handler get notified.
Each SFML event has a corresponding function in that EventHandler class. ie:
bool OnMousePressed(sf::Mouse::Button which);
bool OnKeyPressed(sf::Keyboard::Key which);
bool OnKeyReleased(sf::Keyboard::Key which);
...//and so on
They return false if they didn't consume the event, and true if they did.
That might be a little complex for your needs. But maybe the idea will help?