> I am planning to use min(StatesSkin, StatesControl) for toggling in a following PR.

Hmm, that might be confusing.  

If the control value is 3 and the skin-states is 2, then you will show the 2 pixmap when the state is actually 3 (not handled by skin author). If this were (for example) the VC control mode (absolute, relative, const) and in the future we add a new mode, "magic" then we would tell the user "const" when really they are in "magic" mode if the skin was made before the "magic" mode was added. I think it's better to show nothing (just draw the background pixmap) since you won't mislead them. 

> we have to move from a fast QVector to a slower QMap for Pixmps and Test.

For buttons, you can pre-allocate a vector of null PaintablePointers the size of the number of states provided by the control. Then, if the skin author provides a ```<State>X</State>``` block, and X is in the range of valid values, you can fill it in. 

In the paint event if a pixmap is null we just don't draw it.