I usually have many singleton components in my app. I would break them down into different packages to avoid circular dependence.
On 30 March 2016 at 17:06, Elvis Stansvik <elvst...@gmail.com> wrote: > 2016-03-30 11:00 GMT+02:00 Elvis Stansvik <elvst...@gmail.com>: > > Hi all, > > > > I have a problem that I think is due to QTBUG-39703 [1] and > > QTBUG-34418 [2], but perhaps there's a smart workaround. > > > > Imagine the following setup: > > > > dir/ > > main.qml The main file > > MyItem.qml Some item, uses Style > > Style.qml Some colors et.c. > > State.qml Some application-wide state (uses MyItem, see > below!) > > qmldir > > > > with contents as follows: > > > > > > //// main.qml > > import QtQuick 2.4 > > > > MyItem { > > } > > > > > > //// MyItem.qml > > import QtQuick 2.4 > > import "." // required due to QTBUG-34418 > > > > Rectangle { > > color: Style.backgroundColor > > } > > > > > > //// Style.qml -- Some colors et.c. > > pragma Singleton > > > > import QtQuick 2.4 > > > > QtObject { > > readonly property color backgroundColor: "#abc" > > } > > > > > > //// State.qml -- Some application-wide state. > > pragma Singleton > > > > import QtQuick 2.4 > > > > QtObject { > > property int someState: 1 // This is fine. > > > > // But what if we need to keep a MyItem as state > > // like below? It would lead to a process exit with > > // status 255 because this singleton will implicitly > > // import MyItem.qml, which in turn must import "." > > // to access the Style.qml singleton (due to > > // QTBUG-34418), and this will bring in State.qml > > // again -> circular dependency :/ > > > > //property MyItem someItem: MyItem {} > > > > // Uncomment the above -> Process exits with 255 due to QTBUG-39703 > > } > > > > This last file shows the problem, if the application state in the > > State.qml singleton includes a MyItem, I get a circular dependency > > leading to a process exit with status 255. > > > > Is there some way around this conundrum? It's the requirement to make > > an explicit import "." to get the Style singleton (due to QTBUG-39703) > > that really spoils it I think :/ > > > > The qmldir file is: > > > > singleton Style 1.0 Style.qml > > singleton State 1.0 State.qml > > MyItem 1.0 MyItem.qml > > > > Surely someone has used multiple singletons like this? > > And I realized that, eventhough my example did not show it, it's > likely that MyItem would have a dependency on State.qml (the > application-wide state singleton), so there would indeed be a circular > dependency as far as imports go, but not a real circular dependency of > course. That is, I would not make use of the MyItem property of the > singleton from MyItem itself. Can QML not cope with such a situation > currently? > > Elvis > > > > > Cheers, > > Elvis > > > > [1] https://bugreports.qt.io/browse/QTBUG-39703 > > [2] https://bugreports.qt.io/browse/QTBUG-34418 > _______________________________________________ > Interest mailing list > Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest >
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest