从 qml 上下文访问 class 的实例
Accessing instances of a class from qml context
我是 QT 和 QML 的新手。我有一个 class,它实例化了 subclasses。我想通过一些 qml 绑定将这些子 classes 中的方法公开给我的 UI。
例如
class MainClass: QObject
{
Q_OBJECT
Subclass subclass;
MainClass();
}
class Subclass:QObject
{
Q_Object
Subclass();
public slots:
void someMethod();
}
Main.C
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQuickView *view = new QQuickView;
MainClass mainclass;
view->rootContext()->setContextProperty("MainClass", &mainClass);
view->setSource(QUrl("qrc:/main.qml"));
view->show();
}
在这种情况下,我想从 QML UI 中访问 mainclass.subclass.someMethod()。
有什么好的方法吗?我是否应该在 MainClass 中为我想访问的每个 function/property 提供包装器方法。
将 SubClass
设为 MainClass
的 属性 是可能的。例如:
class MainClass : public QObject
{
Q_OBJECT
Q_PROPERTY(SubClass *subClass MEMBER subClass CONSTANT)
public:
MainClass();
private:
SubClass *subclass;
};
这些在 QML 中称为“grouped properties”。
我是 QT 和 QML 的新手。我有一个 class,它实例化了 subclasses。我想通过一些 qml 绑定将这些子 classes 中的方法公开给我的 UI。
例如
class MainClass: QObject
{
Q_OBJECT
Subclass subclass;
MainClass();
}
class Subclass:QObject
{
Q_Object
Subclass();
public slots:
void someMethod();
}
Main.C
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQuickView *view = new QQuickView;
MainClass mainclass;
view->rootContext()->setContextProperty("MainClass", &mainClass);
view->setSource(QUrl("qrc:/main.qml"));
view->show();
}
在这种情况下,我想从 QML UI 中访问 mainclass.subclass.someMethod()。
有什么好的方法吗?我是否应该在 MainClass 中为我想访问的每个 function/property 提供包装器方法。
将 SubClass
设为 MainClass
的 属性 是可能的。例如:
class MainClass : public QObject
{
Q_OBJECT
Q_PROPERTY(SubClass *subClass MEMBER subClass CONSTANT)
public:
MainClass();
private:
SubClass *subclass;
};
这些在 QML 中称为“grouped properties”。