我是QT和QML的新手。我有一个类,它实例化子类。我想通过一些qml绑定将这些子类中的方法暴露给我的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中为我想要访问的每个函数/属性提供包装器方法。
答案 0 :(得分:4)
可以将SubClass
设为MainClass
的属性。例如:
class MainClass : public QObject
{
Q_OBJECT
Q_PROPERTY(SubClass *subClass MEMBER subClass CONSTANT)
public:
MainClass();
private:
SubClass *subclass;
};
这些被称为" grouped properties"在QML。