在QML文件中使用C++类变量

Using a C++ class variable in QML file

本文关键字:C++ 类变量 QML 文件      更新时间:2023-10-16

如何在Qt中的QML文件中使用C++类变量。我想在c++文件中设置一个基于Q_OS_Android的变量,并在QML文件中评估一个条件。这怎么可能呢?

您必须在头文件中将变量声明为属性,并在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"
   ...
}