My rules are more or less: it should be Foo.h/Foo.cpp. it should be named Foo.h/Foo.cpp. it should be named Foo.h/Foo.cpp.Name clashes should be avoided.
There is a problem with your approach, as in the case of src/box and src/frontends/qt4/box. I am not offended by QBox, although I dislike QL stuff. Cheers, Bo