When I cross-compile Qt 5.8.0 from source myself and use it to build the Qt \"Dynamic Layouts\" example from Qt Widgets for Microsoft Windows, it looks old-fashioned, as if it w
If you look in the src/widgets/configure.json file from Qt 5.8.0, you can see that it checks for the existence of uxtheme.h, and that uxtheme.h is a precondition for compiling the windowsxp style, which is a precondition for compiling the windowsvista style. By looking in Qt's config.log, I saw that the uxtheme.h test failed. I am not sure why, but it's probably because uxtheme.h cannot be included on its own; you need to include windows.h beforehand. I verified that the windowsxp and windowsvista styles were indeed not enabled by looking in the src/widgets/qtwidgets-config.pri file after configuring Qt. It has a list of styles that are going to get compiled, and windowsvista is not the list.
I tried adding the -style-windowsxp -style-windowsvista options to Qt's configure command, but those options just cause errors because the uxtheme.h test is failing and it is a prerequisite for compiling those themes.
My solution was to apply this patch to Qt 5.8.0 to skip the uxtheme test altogether:
diff -ur qt58-orig/src/widgets/configure.json qt58/src/widgets/configure.json
--- qt58-orig/src/widgets/configure.json 2017-05-28 02:07:07.625626151 -0700
+++ qt58/src/widgets/configure.json 2017-06-27 21:25:52.752628339 -0700
@@ -28,11 +28,6 @@
},
"tests": {
- "uxtheme": {
- "label": "uxtheme.h",
- "type": "files",
- "files": [ "uxtheme.h" ]
- }
},
"features": {
@@ -57,7 +52,7 @@
},
"style-windowsxp": {
"label": "WindowsXP",
- "condition": "features.style-windows && config.win32 && !config.winrt && tests.uxtheme",
+ "condition": "features.style-windows && config.win32 && !config.winrt",
"output": [ "styles" ]
},
"style-windowsvista": {
I'm not sure why the MSYS2 package worked well, since I don't see any patch like this in their build script.