typedef's have no problem being private. typedef is allowed practically anywhere (even in functions, which is pretty awesome). 

The problem would be Q_DECLARE_OPERATORS_FOR_FLAGS normally, since it requires its operators to be global to work properly (or degrading down to QFlag's, which isn't too bad). However, I don't see anywhere in the code its actually being used as a flag (correct me if i'm wrong). Instead, its just being used as an enum : so you should be able to remove both macros, and switch to RenderOption directly.