4
我有信號被髮射,然後捕獲在QML;然而,當我嘗試讀取附加到信號的參數時,我會得到「未定義」。以下是一些代碼片段。感謝您提前幫忙!接收CML信號QML
mymodel.h
class MyModel : public QObject
{
Q_OBJECT
...
signals:
void mySignal(float a, some::enum b)
...
}
mymodel.cpp
做些事情來發出信號(這不是一個問題,只需emit mySignal(1.0, 2.0);
)
someotherclass.cpp
無效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();
...
}
main.qml
Rectangle {
Connections {
target: MyModel
onMySignal: console.log(a)
}
}
上面console.log(a)
得到預期時調用;然而,我期望輸出爲「1.0」,但它只是說「未定義」,我不知道爲什麼。我正在使用Qt 5.1和Qt Quick 2.0。
是的,你是對的。我拿出枚舉並且信號按預期工作。這是令人失望的,因爲我想我必須同時發出一個單獨的信號來發射。這是一個錯誤,當這篇文章與兩個浮動,在我的代碼中它是正確的浮動和枚舉。有沒有辦法將枚舉暴露給QML? – roundtheworld
http://stackoverflow.com/questions/4461017/exposing-qts-q-enums-to-qml 似乎相關。不要忘記標記答案已解決!祝你好運! – Deadron