Native OS styling
For the future my findings about native OS styling:
- Without a huge restructure of INIshell and losing one of it's main elegant ideas, it can't be done.
- Palette styling is not respected by some widely used platforms. This leaves stylesheets, which are the main styling mechanism in Qt.
- But a stylesheet overrides the QStyle that is used for e. g. a native macOS look; these are mutually exclusive concepts.
- It becomes so prominent on macOS because that styly has some narrow framing and that leads to vast differences in the button / checkbox / ... sizes, enough that we must handle it.
This leaves the option of styling each and every widget our own (again losing the macOS style), doing without colors, or forcing a style. Seeing that a few styles have bugs that concern us as well (striked-trough frame caption, color extending outside an area, ...), this is currently what we try to do: force the ""Fusion"" style, which seems to work nicely (albeit with bugs also).
- The ""Fusion"" style should be compiled by default as needed, so if the necessary plugin is deployed with the application, we should be fine.
On the main style sheet man page it says: ""Style sheets are applied on top of the current widget style, meaning that your applications will look as native as possible, but any style sheet constraints will be taken into consideration."" And just below it actually explains it: ""When a style sheet is active, the QStyle returned by QWidget::style() is a wrapper ""style sheet"" style, not the platform-specific style. The wrapper style ensures that any active style sheet is respected and otherwise forwards the drawing operations to the underlying, platform-specific style (e.g., QWindowsVistaStyle on Windows).""
I don't know if this sentence from https://doc.qt.io/qt-5/qstyle.html: ""Warning: Qt style sheets are currently not supported for custom QStyle subclasses. We plan to address this in some future release."" is a hint for progress in this direction.
See the last paragraph in the main stylseheet help [1] and this stackoverflow post [2] that goes into a little detail an also explains why setting a font stylesheet is fine.
[1] https://doc.qt.io/qt-5/stylesheet.html [2] https://stackoverflow.com/questions/28839907/how-to-override-just-one-propertyvalue-pair-in-qt-stylesheet