在 QML 文件中使用 C++ class 变量
Using a C++ class variable in QML file
如何在 Qt 的 QML 文件中使用 C++ class 变量。我想在 c++ 文件中设置一个基于 Q_OS_Android
的变量,并在 QML 文件中评估一个条件。这怎么可能?
您必须在头文件中将变量声明为 属性,并在主文件中使用 qml 注册 class。这是一个 class Foo 和变量 QString var:
的例子
class Foo : ...
{
Q_OBJECT
Q_PROPERTY(QString var READ getVar WRITE setVar NOTIFY varChanged)
public:
Foo();
~Foo();
QString getVar() const {return m_var;}
void setVar(const QString &var);
signals:
void varChanged();
public slots:
//slots can be called from QML
private:
QString m_var;
};
主要是这样的:
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
qmlRegisterType<Foo>("MyApp", 1, 0, "Foo");
QQuickView view;
view.setSource(QUrl("qrc:/main.qml"));
view.show();
return app.exec();
}
在您的 Qml 文件中,您可以简单地导入您的 class 使用:
import MyApp 1.0
然后像使用任何普通 QML 类型一样使用 class:
Foo{
id: myClass
var: "my c++ var"
...
}
如何在 Qt 的 QML 文件中使用 C++ class 变量。我想在 c++ 文件中设置一个基于 Q_OS_Android
的变量,并在 QML 文件中评估一个条件。这怎么可能?
您必须在头文件中将变量声明为 属性,并在主文件中使用 qml 注册 class。这是一个 class Foo 和变量 QString var:
的例子class Foo : ...
{
Q_OBJECT
Q_PROPERTY(QString var READ getVar WRITE setVar NOTIFY varChanged)
public:
Foo();
~Foo();
QString getVar() const {return m_var;}
void setVar(const QString &var);
signals:
void varChanged();
public slots:
//slots can be called from QML
private:
QString m_var;
};
主要是这样的:
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
qmlRegisterType<Foo>("MyApp", 1, 0, "Foo");
QQuickView view;
view.setSource(QUrl("qrc:/main.qml"));
view.show();
return app.exec();
}
在您的 Qml 文件中,您可以简单地导入您的 class 使用:
import MyApp 1.0
然后像使用任何普通 QML 类型一样使用 class:
Foo{
id: myClass
var: "my c++ var"
...
}