Now this might now be a bug, since cascading color isn’t necessarily a Widget thing. To get around it, I just call setCascadeColorEnabled() on it and all of its children, so it’s not the worst thing in the world.
Likewise, it seems like children inside of the widget don’t get all of its properties copied over, but I’m still investigating exactly how much is going wrong.
So far it seems like the background images aren’t resized properly but I’m not sure exactly what’s going wrong, but to work around it, I need to call widget->loadTextures and have it reload the same images again. When I do, the scaling gets properly set. Here’s a picture of the two, where the left is where I use a cloned button instance, and the right is the same button but with loadTextures called on it.
Both cases use the same source images, nothing has been changed, beyond loadTextures being called. I would have expected clone() to have done whatever loadTextures does. Note the clean white background in the second image, along with the zoomed out edges. Both buttons are sized the same (800x200).