so che QML non supporta stile CSS, come i widget fanno, e ho letto su approcci alternativi per lo styling/tematizzazione:Styling QML senza marcatura manualmente ogni proprietà essere in stile
- https://qt-project.org/wiki/QmlStyling
- http://www.slideshare.net/BurkhardStubert/practical-qml-key-navigation/34
comune per questi approcci è che richiedono agli sviluppatori di specificare le parti del QML che può essere uno stile, sia legandosi a un immobile in un “file QML styling/Singleton”, oppure utilizzando un Loader caricare un diverso Componente QML in base al nome dello stile. Quello che vorrei è qualcosa che funziona come il selettore "id" in CSS invece del selettore "class", in modo che i singoli file QML non debbano sapere se saranno disegnati in un secondo momento o meno.
mio approccio attuale fanno tutti i file QML aspetto simile a questo (utilizzando approccio link 2):
Main.qml
Rectangle {
Id: background
color: g_theme.background.color
//g_theme is defined in root context and loaded dynamically
}
Quello che vorrei fare è:
Main.qml
Rectangle {
Id: background
color: “green” // default color
}
e poi hanno un file di stile che definisce (o simili)
Main.qml #background.color: red
Questo è possibile in questo momento, o qualcosa che è in cantiere per un futuro versione di Qt, o sarà il modo preferito di styling continuare a essere qualcosa di simile all'approccio descritto nei link sopra?
Grazie per la risposta: immagino che il tuo approccio sia simile a quello che facciamo attualmente, tranne che usiamo file qml per definire i "temi" anziché i file .js. Il mio problema con questo è che dobbiamo decidere cosa vogliamo anticipare per evitare di dover passare attraverso molti temi e controlli e modificare le proprietà a cui vogliamo applicare lo stile. Ma per ora funziona bene, quindi continueremo ad usare questo approccio fino a quando qualcosa di meglio si presenterà. – jesperhh
Sarebbe possibile sbarazzarsi dell'importazione di "MyTheme.js" come tema: 'istruzione? Mi piacerebbe fare esattamente come @jesperhh ma con risorse binarie esterne. Mi chiedo se posso cambiare temi in runtime senza dover dichiarare le importazioni. –