嗨,我想在全球范围内以及在我的qml文件中的其他任何地方都可以访问qt QML var。这可能吗?
我知道在c ++对象中创建变量后,可以通过公开其getter函数在QML中对其进行访问,但这仅在您知道数据类型的情况下才有效。字符串,整数,布尔值。
是否存在可以处理c ++中QML变量的变量数据类型(或类),所以我只能在QML文件的其他部分中调用它
谢谢
答案 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