I've realized today that if you have 3 classes like so:
class 1 has a signal
class 2 has a signal that connects to class 3's private slot
class 3 has a private slot and class 2 is a friend of class 3
If I connect class 1's signal to class 2's signal, I can essentially call class 3's private slot by emitting class 1's signal.
If signals were private or protected this wouldn't occur.
There's another scenario where this can be bad, imagine we have this setup:
class 1 has a signal
class 2 has a signal that connects into it's base classes protected slot
class 3 is the base class with a protected slot
Doesn't this break Object Oriented Principles?