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