신호가 방출되고 QML로 캡처됩니다. 그러나 신호에 첨부 된 매개 변수를 읽으려고하면 "정의되지 않음"을 얻습니다. 다음은 일부 코드 단편입니다. 도움을 미리 주셔서 감사합니다!QML로 C++ 신호 받기
mymodel.h
class MyModel : public QObject
{
Q_OBJECT
...
signals:
void mySignal(float a, some::enum b)
...
}
mymodel.cpp
someotherclass.cpp
무효 (이 단순히 emit mySignal(1.0, 2.0);
문제가되지 않습니다) 신호를 방출하는 무언가를 SomeOtherClass :: setupQML() { ...
QQuickView *view = new QQuickView();
QWidget *container = QWidget::createWindowContainer(view);
...
QmlRootData = new RootData();
view->rootContext()->setContextObject(QmlRootData);
view->rootContext()->setContextProperty("MyModel", model);
view->setSource(QUrl("main.qml"));
view->setResizeMode(QQuickView::SizeRootObjectToView);
QObject* rootObj = view->rootObject();
...
} 예상 한
Rectangle {
Connections {
target: MyModel
onMySignal: console.log(a)
}
}
위 console.log(a)
가 호출되는
main.qml; 그러나 출력이 "1.0"이 될 것으로 예상되지만 간단히 "정의되지 않음"이라고 표시되며 이유가 확실하지 않습니다. Qt 5.1과 Qt Quick 2.0을 사용하고 있습니다.
네, 맞습니다. 열거 형을 꺼 냈고 예상대로 신호가 작동했습니다. 이것은 내가 동시에 방출 할 별도의 신호를 만들어야하기 때문에 실망 스럽습니다. 두 개의 수레로이 포스트를 만들 때 오타입니다. 내 코드에서는 float 및 enum처럼 정확합니다. 열거 형을 QML에 노출시키는 방법이 있습니까? – roundtheworld
http://stackoverflow.com/questions/4461017/exposing-qts-q-enums-to-qml 이 적합하다고 보입니다. 답을 해결 된 것으로 표시하는 것을 잊지 마십시오! 행운을 빕니다! – Deadron