gpt4 book ai didi

c++ - 在 QML 中接收 C++ 信号

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:23:52 25 4
gpt4 key购买 nike

我发出信号,然后在 QML 中捕获;然而,当我尝试读取附加到信号的参数时,我得到“未定义”。以下是一些代码片段。感谢您提前提供帮助!

我的模型.h

class MyModel : public QObject
{
Q_OBJECT

...

signals:
void mySignal(float a, some::enum b)

...
}

我的模型.cpp

做一些事情来发出信号(这不是问题,只需 emit mySignal(1.0, 2.0);)

someotherclass.cpp

void 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();

...

主.qml

Rectangle {
Connections {
target: MyModel
onMySignal: console.log(a)
}
}

上面的 console.log(a) 在预期的时候被调用;但是,我希望输出为“1.0”,但它只是说“未定义”,我不确定为什么。我正在使用 Qt 5.1 和 Qt Quick 2.0。

最佳答案

可能是枚举参数在将参数绑定(bind)到 QML 信号处理程序上下文的过程中导致错误。因为这个枚举似乎没有作为一种类型公开给 QML,所以我不相信它可以正确地将它翻译成 qml,这可能会破坏整个过程。

鉴于您在发出信号时传递了两个 float ,它实际上应该是两个浮点输入而不是一个 float 和一个枚举吗?

关于c++ - 在 QML 中接收 C++ 信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17793671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com