如何在Qt中的QML文件中使用C ++类变量。我想在c ++文件中根据Q_OS_Android
设置一个变量,并在QML文件中评估一个条件。这怎么可能?
答案 0 :(得分:5)
您必须在头文件中将变量声明为属性,并在main中注册带有qml的类。以下是类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文件中,您只需使用以下命令导入您的课程:
import MyApp 1.0
然后像使用任何普通的QML类型一样使用你的类:
Foo{
id: myClass
var: "my c++ var"
...
}