📜  注册新的 QML 类型 - C++ (1)

📅  最后修改于: 2023-12-03 15:11:04.956000             🧑  作者: Mango

注册新的 QML 类型 - C++

在 Qt 中,我们可以使用 C++ 来编写自定义 QML 类型。这些类型可以具有自己的属性、信号和槽,可以方便地在 QML 中使用。下面介绍如何注册新的 QML 类型。

步骤
  1. 定义一个 C++ 类来实现我们的自定义类型。

    #include <QObject>
    
    class MyType : public QObject
    {
        Q_OBJECT
        Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
    
    public:
        explicit MyType(QObject *parent = nullptr);
    
        QString name() const;
        void setName(const QString &name);
    
    signals:
        void nameChanged();
    
    private:
        QString m_name;
    };
    
  2. main.cpp 中注册自定义类型。这可以通过调用 qmlRegisterType 函数完成。

    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    #include "mytype.h"
    
    int main(int argc, char *argv[])
    {
        QGuiApplication app(argc, argv);
    
        qmlRegisterType<MyType>("com.example", 1, 0, "MyType");
    
        QQmlApplicationEngine engine;
        engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    
        return app.exec();
    }
    

    qmlRegisterType 函数的第一个参数是我们的自定义类型。第二个参数是类型的主版本号,第三个参数是类型的次版本号。第四个参数是类型在 QML 中的名称。

  3. 在 QML 中使用我们的自定义类型。

    import com.example 1.0
    
    MyType {
        name: "John"
    }
    

    在这个例子中,我们创建了一个 MyType 的实例,并设置了它的 name 属性为 "John"。

总结

现在我们已经学会了如何注册新的 QML 类型。这使得我们可以方便地在 QML 中使用自定义类型,为我们的应用程序增加了更多的灵活性和可扩展性。