[solved] Accessing C++ constants from within QML
-
I'm having trouble accessing C++ constants from within QML. I'm trying to create a Q_OBJECT that holds Q_PROPERTYs:
@
class Colors: public QObject
{
private:
Q_OBJECT
Q_PROPERTY (QColor contentBg READ getContentBg CONSTANT)
public:
Colors();
virtual ~Colors() { }
QColor getContentBg() const { return QColor ("#fefa07"); }
};
@Then I register the type through qmlRegisterUncreatableType:
@
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
qmlRegisterUncreatableType<Colors> ("FirstQtTest.Defs", 1, 0, "Colors", "Instances of Colors are disallowed!");
engine.load (QUrl (QStringLiteral ("qrc:///main.qml")));
return app.exec();
}
@My QML file then tries to access the colour constant like this:
@
import FirstQtTest.Defs 1.0
// ...
color: Colors.contentBg;
@I keep getting the runtime error: "Unable to assign [undefined] to QColor". What am I doing wrong?
Thanks in advance!
-
I managed to get it to work by replacing qmlRegisterUncreatableType with setContextProperty:
@
Colors colors;
engine.rootContext()->setContextProperty ("Colors", &colors);
@I still can't tell why qmlRegisterUncreatableType doesn't work, but the above works fine in my case.