使Qt QML变量可随时随地访问的热点

时间:2019-02-14 14:54:29

标签: qt qml

嗨,我想在全球范围内以及在我的qml文件中的其他任何地方都可以访问qt QML var。这可能吗?

我知道在c ++对象中创建变量后,可以通过公开其getter函数在QML中对其进行访问,但这仅在您知道数据类型的情况下才有效。字符串,整数,布尔值。

是否存在可以处理c ++中QML变量的变量数据类型(或类),所以我只能在QML文件的其他部分中调用它

谢谢

1 个答案:

答案 0 :(得分:1)

正如Amfasis所说,您可以使用rootContext,因此您可以从QML中的任何位置访问它-只要不遮盖该名称即可。另外,您也可以将Singleton注册到QML。
对于这两者,您首先需要创建一个QObject

   <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0</version>
    </dependency>

您在 main 中创建的该对象并将其设置为cd C:\Users\Public\Documents\apache-maven-3.5.2\bin

mvn install:install-file -Dfile=C://Users//Codemaker//Downloads//Compressed//ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

要使用C ++进行设置,请使用设置器。在QML端,只需绑定到public class MyContextObject: public QObject { Q_OBJECT Q_PROPERTY(QVariant myVar READ myVar NOTIFY myVarChanged) QVariant m_myVar; public: MyContextObject(QObject* parent = nullptr) : QObject(parent) {} QVariant myVar() { return m_myVar; } void setMyVar(QVariant var) { if (var == m_myVar) return; m_myVar = var; emit myVarChanged(); } signals: void myVarChanged(); }
如果您也想从QML进行修改,请同时公开设置器。


  

这未经测试,我现在没有Qt开发环境。   要将其公开为单例,可以使用以下函数:   https://doc.qt.io/qt-5/qqmlengine.html#qmlRegisterSingletonType-1