Every widget has a renderer which contains the properties of how the widget should look (e.g. background and text color). When creating a widget, such a renderer is automatically created with it.
The widgets all have a getRenderer() method which will return a pointer to the renderer. The renderer returned by this function will have setters and getters for the properties available for that particular type of widget (i.e. the renderer of a list box has different functions than the one from a button).
When not calling the setRenderer function, each widget will have its own renderer. You can however set the same renderer in multiple widgets so that changing the renderer changes all these widgets. Renderers that you get from themes are always shared.
If you want to copy a renderer and not have other widgets be affected when you change it then you should clone the renderer: