📅  最后修改于: 2023-12-03 15:11:04.956000             🧑  作者: Mango
在 Qt 中,我们可以使用 C++ 来编写自定义 QML 类型。这些类型可以具有自己的属性、信号和槽,可以方便地在 QML 中使用。下面介绍如何注册新的 QML 类型。
定义一个 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;
};
在 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 中的名称。
在 QML 中使用我们的自定义类型。
import com.example 1.0
MyType {
name: "John"
}
在这个例子中,我们创建了一个 MyType
的实例,并设置了它的 name
属性为 "John"。
现在我们已经学会了如何注册新的 QML 类型。这使得我们可以方便地在 QML 中使用自定义类型,为我们的应用程序增加了更多的灵活性和可扩展性。