我是QT和QML的新手。我有一个实例化子类的类。我想通过一些qml绑定(bind)将这些子类中的方法公开给我的UI。
例如
class MainClass: QObject
{
Q_OBJECT
Subclass subclass;
MainClass();
}
class Subclass:QObject
{
Q_Object
Subclass();
public slots:
void someMethod();
}
主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中为我要访问的每个函数/属性提供包装方法。
最佳答案
通过将SubClass
设置为MainClass
的属性是可能的。例如:
class MainClass : public QObject
{
Q_OBJECT
Q_PROPERTY(SubClass *subClass MEMBER subClass CONSTANT)
public:
MainClass();
private:
SubClass *subclass;
};
这些在QML中称为“grouped properties”。
关于c++ - 从QML上下文访问类的实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44056476/