I've created https://bugreports.qt.io/browse/QTBUG-117403 to track this.
> -----Original Message----- > From: Interest <interest-boun...@qt-project.org> On Behalf Of EXT Mitch > Curtis via Interest > Sent: Wednesday, September 20, 2023 1:07 PM > To: Matthew Fincham <matth...@cat.co.za>; interest@qt-project.org > Subject: Re: [Interest] Creating a custom QML style with Material as a > fallback, > but with a dark theme > > > -----Original Message----- > > From: Matthew Fincham <matth...@cat.co.za> > > Sent: Wednesday, September 20, 2023 12:43 PM > > To: EXT Mitch Curtis <mitch.cur...@qt.io>; interest@qt-project.org > > Subject: Re: [Interest] Creating a custom QML style with Material as a > > fallback, but with a dark theme > > > > Hi Mitch > > > > Thanks for the reply. That is effectively what I have resorted to doing: > > setting the attached properties for the root window item: > > > > Material.theme: Material.Dark > > Material.primary: ... > > Material.accent: ... > > Material.foreground: ... > > Material.background: ... > > > > One problem with this approach is the 'Variant' property can't be set > > (Dense/Normal). Looking in the source code, that can only be set from > > the environment variable, which is done in > > QQuickMaterialStyle::initGlobals() > > Yes, that's correct. > > > Just to complete the picture, I have tried with the import in qmldir: > > > > import QtQuick.Controls.Material auto > > > > and setting the fallback style in C++: > > > > QQuickStyle::setFallbackStyle("Material"); > > > > I would imagine 'initiGlobals' should be called, even when it is the > > fallback style. But I don't know the infrastructure for the style > > plugins and the theme initialisation, so not sure how that should be > accomplished. > > Just to correct myself from earlier: I had a typo in my environment variable > name, so the attached property isn't needed if you: > > - Import the fallback style yourself (via qmldir or CMake). > - Import your style explicitly [1] instead of QtQuick.Controls. > > I suspect you're missing the second step above. > > To be thorough about this (since I already have the code here), this means > that > doing the following in C++ > > qputenv("QT_QUICK_CONTROLS_STYLE", "ResourceStyle"); > qputenv("QT_QUICK_CONTROLS_FALLBACK_STYLE", "Material"); > qputenv("QT_QUICK_CONTROLS_MATERIAL_THEME", "Dark"); > > with this qmldir > > module ResourceStyle > Button 2.15 Button.qml > > and this QML code > > import QtQuick > import QtQuick.Layouts > import QtQuick.Controls > > ApplicationWindow { > width: 640 > height: 480 > visible: true > title: qsTr("Hello World") > > RowLayout { > Button { > text: "Button" > } > > TextArea { > placeholderText: "Enter text..." > } > } > } > > is not enough for the Material dark theme to be taken into use. > > At the very least we need to document that setFallbackStyle won't actually > import any styles. We also need to check if this is a regression against Qt 5, > and if so, whether or not it's possible to fix. I'll let you know if I > discover > anything else. > > [1] > https://doc.q/ > t.io%2Fqt-6%2Fqtquickcontrols-styles.html%23compile-time-style- > selection&data=05%7C01%7Cmitch.curtis%40qt.io%7C34ab2473452f40b30 > f4708dbb997cdeb%7C20d0b167794d448a9d01aaeccc1124ac%7C0%7C0% > 7C638307833867354198%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wL > jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C > %7C%7C&sdata=6HlXwYQBbXAoy1bj4Z5bYU8TCf1MifRv9%2BuO0%2Flmrr8 > %3D&reserved=0 > > > Kind regards > > Matthew > > > > On 2023/09/20 03:44, EXT Mitch Curtis wrote: > > > Hi Matthew, > > > > > >> -----Original Message----- > > >> From: Interest <interest-boun...@qt-project.org> On Behalf Of > > >> Matthew Fincham via Interest > > >> Sent: Tuesday, September 19, 2023 1:13 PM > > >> To: interest@qt-project.org > > >> Subject: Re: [Interest] Creating a custom QML style with Material > > >> as a fallback, but with a dark theme > > >> > > >> Hi > > >> > > >> Following up on my own post. > > >> > > >> QQuickMaterialStyle logs a warning if an invalid theme is used (not > > >> 'Light' or 'Dark'). This is in the function that initialises the > > >> style's global variables. (in > > >> qquickmaterialstyle.cpp) > > >> > > >> When the 'Material' style is used as the fallback style, this log > > >> is not seen. This initialisation function is called from the 'Material' > > >> plugin ( qtquickcontrols2materialstyleplugin.cpp), which seems to > > >> indicate the plugin's initialisation is not run when it is the fallback > > >> theme. > > >> > > >> Does this make sense, and is there a way to force the initialisation? > > > I'm looking into it, but as a workaround, assuming your style > > > imports the > > Material style as a fallback in its qmldir (or IMPORTS in > qt_add_qml_module): > > > > > > import QtQuick.Controls.Material auto > > > > > > you can then use the attached API to set the theme: > > > > > > Material.theme: Material.Dark > > > > > >> Thanks again. > > >> Matthew Fincham > > >> > > >> On 2023/09/18 12:52, Matthew Fincham via Interest wrote: > > >>> Hi > > >>> > > >>> I am attempting to create a custom QML style using this documentation: > > >>> > > >> https://doc/. > > >>> qt.io%2Fqt-6%2Fqtquickcontrols-customize.html%23definition-of-a-st > > >>> yl > > >>> e& > > >>> > > >> > > > data=05%7C01%7Cmitch.curtis%40qt.io%7C4e7b0a9253b649740eed08dbb > > >> 8cf6fb0 > > >> > > > %7C20d0b167794d448a9d01aaeccc1124ac%7C0%7C0%7C638306973314 > > >> 152407%7CUnk > > >> > > > nown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6I > > >> k1haWw > > >> > > > iLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=V2b3M0MBvsarYVwtDQd > > >> aF3kwWtc2xurp > > >>> AuA%2F10IABak%3D&reserved=0 > > >>> > > >>> I won't provide sample code because it is close to line-for-line. > > >>> The custom style works - there is a custom button and the other > > >>> controls use the Material style. However, I can't get the Material > > >>> style to run with the Dark theme. > > >>> > > >>> The theme is set with an environment variable: > > >>> > > >>> QT_QUICK_CONTROLS_MATERIAL_THEME=Dark > > >>> > > >>> The style is set in C++: > > >>> > > >>> QQuickStyle::setStyle("MyStyle"); > > >>> > > >>> If the style is "Material" this works as expected. With 'MyStyle', > > >>> that falls back to Material, a Light theme is used. Is there any > > >>> was to force the fallback style to use the Dark theme? > > >>> > > >>> Many thanks > > >>> Matthew Fincham > > >>> _______________________________________________ > > >>> Interest mailing list > > >>> Interest@qt-project.org > > >>> https://list/ > > >>> s.qt- > > >> project.org%2Flistinfo%2Finterest&data=05%7C01%7Cmitch.curtis%40q > > >> > > > t.io%7C4e7b0a9253b649740eed08dbb8cf6fb0%7C20d0b167794d448a9d0 > > >> 1aaeccc11 > > >> > > > 24ac%7C0%7C0%7C638306973314152407%7CUnknown%7CTWFpbGZsb3 > > >> d8eyJWIjoiMC4w > > >> > > > LjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7 > > >> C%7C%7C > > >> > > > &sdata=%2F9LFtD8jWWX0qNZxQOv0ENQP3JuVbDEOgHDpIZ0R%2FoE%3D& > > >> reserved=0 > > >> > > >> _______________________________________________ > > >> Interest mailing list > > >> Interest@qt-project.org > > >> https://l/ > > >> > is%2F&data=05%7C01%7Cmitch.curtis%40qt.io%7C34ab2473452f40b30f4 > 708d > > >> > bb997cdeb%7C20d0b167794d448a9d01aaeccc1124ac%7C0%7C0%7C6383 > 07833867 > > >> > 354198%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoi > V2luMzIi > > >> > LCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=hTr8401I > kTxlOv > > >> RcB1WzDAfhsWAOKqA%2FzFR7z1lqtkU%3D&reserved=0 > > >> > > > ts.q%2F&data=05%7C01%7Cmitch.curtis%40qt.io%7C38011a85df6c4af294 > > 0f08d > > >> > > > bb99403f8%7C20d0b167794d448a9d01aaeccc1124ac%7C0%7C0%7C6383 > > 0781761575 > > >> > > > 2498%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2l > > uMzIiLCJB > > >> > > > TiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=K%2FDfjfA%2 > > FEP0Nx0YI > > >> CcfeyD%2FWHcTu4OKNd852h6IDufo%3D&reserved=0 > > >> t- > > >> > > > project.org%2Flistinfo%2Finterest&data=05%7C01%7Cmitch.curtis%40qt.io > > >> > > > %7C4e7b0a9253b649740eed08dbb8cf6fb0%7C20d0b167794d448a9d01aa > > >> > > > eccc1124ac%7C0%7C0%7C638306973314152407%7CUnknown%7CTWFpb > > >> > > > GZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI > > >> > > > 6Mn0%3D%7C3000%7C%7C%7C&sdata=%2F9LFtD8jWWX0qNZxQOv0ENQ > > >> P3JuVbDEOgHDpIZ0R%2FoE%3D&reserved=0 > > _______________________________________________ > Interest mailing list > Interest@qt-project.org > https://lists.q/ > t- > project.org%2Flistinfo%2Finterest&data=05%7C01%7Cmitch.curtis%40qt.io > %7C34ab2473452f40b30f4708dbb997cdeb%7C20d0b167794d448a9d01a > aeccc1124ac%7C0%7C0%7C638307833867354198%7CUnknown%7CTWFp > bGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXV > CI6Mn0%3D%7C3000%7C%7C%7C&sdata=I3CQxI4tfKGGfXiDFUcptsLG%2B4 > k%2BPxjEJyP87b0O774%3D&reserved=0 _______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest