Qt 如何从C+连接到附加信号+;? < >我想连接到C++的对象的组件。我应该使用什么语法?

Qt 如何从C+连接到附加信号+;? < >我想连接到C++的对象的组件。我应该使用什么语法?,qt,qml,qtquick2,signals-slots,qt-signals,Qt,Qml,Qtquick2,Signals Slots,Qt Signals,因此您可以使用此代码访问Component.completed和Component.destruction信号: QObject* attached_component = qmlAttachedPropertiesObject<QQmlComponent>(qml_component); QObject::connect(attached_component, SIGNAL(destruction()), this, SLOT(onDestruction())); QObject:

因此您可以使用此代码访问Component.completed和Component.destruction信号:

QObject* attached_component = qmlAttachedPropertiesObject<QQmlComponent>(qml_component);
QObject::connect(attached_component, SIGNAL(destruction()), this, SLOT(onDestruction()));
QObject::connect(attached_component, SIGNAL(completed()), this, SLOT(onCompleted()));
QObject*attached_component=qmlattachedproperties对象(qml_component);
QObject::connect(连接的_组件、信号(销毁())、此、插槽(onDestruction());
QObject::connect(连接的_组件、信号(已完成())、此、插槽(已完成());
qml_组件是您的qml组件指针,“this”是具有onDestruction和onCompleted插槽的对象。
也许这是一个黑客,但现在它工作(Qt 5.8 VS2013)< /P> < P>一个解决方案是从QML调用C++函数:

Component.onCompleted:Qml_utils.connect_qmlobject(this)
C++代码

Q_INVOKABLE void qml_utils::connect_qmlobject(QObject*obj) {
  //do something with QML QObject:
  connect(obj, SIGNAL(destroyed(QObject*)),
          this,SLOT(disconnect_qmlobject(QObject*)));
}

您是如何创建组件的?从C++还是QML?我认为这没有道理。例如,使用
QQmlApplicationEngine::load()
创建QML树时,将在连接到信号之前执行
组件.onCompleted
。无论如何,您可以为您从“代码>组件”调用“Objult/<代码>”的对象创建代理信号,并将其连接到C++的信号。通过StConnect属性()将Quffice对象访问QML,并直接从组件OnFrand处理程序调用该时隙。