だから、QObject派生ファイルをシグナル/スロット設定を介してC++からQMLに渡したいとします。
class MyClass : public QObject
{
Q_OBJECT
public:
explicit MyClass(QObject *parent = 0);
signals:
void sendSignal(MyClass* anotherMyClass)
public slots:
void send_signals() { emit sendSignal(this); }
};
あなたはQObjectをベース型ではMyClassと呼ばれるC++のタイプを持っている、とあなたは成功しQMLで次に
qmlRegisterType<MyClass>("com.myapp", 1, 0, "MyClass");
をした場合、あなたがしなければならないすべてはこれです:
import QtQuick 2.0
import com.myapp
Item {
MyClass {
id: myInstance
Component.OnCompleted: {
// connect signal to javascript function
myInstance.sendSignal.connect(myInstance.receiveSignal);
}
function receiveSignal(mySentObject) {
// here is your QObject sent via Signal
var receivedObject = mySentObject;
// Now to send it back
// (will cause an endless loop)
myInstance.sendSignal(receivedObject);
// or you could do this to perform
// the same endless loop
receivedObject.send_signals();
// or you could do this to perform
// the same endless loop
receivedObject.sendSignal(myInstance)
}
}
}
要約:
QML engで登録されている限り、QObjectから派生したオブジェクトを送信することができます実際のオブジェクトとしては、QMLの他のタイプのように扱うだけです。
希望すると、