我在QML中收到一个信号,我想连接到C ++中定义的插槽。但是我的代码失败了,我收到了错误:
QObject :: connect:在../ qt_cpp / mainwindow.cpp中没有这样的信号QDeclarativeContext :: sent():66
这是一个c ++代码段:
message_reading test;
QDeclarativeView tempview;
tempview.setSource(QUrl("qrc:/qml/media_screen.qml"));
QObject *item = tempview.rootContext();
QObject::connect(item, SIGNAL(sent()),
&test, SLOT(readMediaJSONDatabase(QString&)));
这是一个QML代码段:
Image {
id: bluetooth
source: "images_mediahub/footer_icons/bluetooth_normal.png"
signal sent(string msg)
MouseArea {
anchors.fill: parent
onClicked: {
bluetooth.sent(Test.medialibrarydb.toString())
info_load.source="./bluetooth.qml"
}
}
}
答案 0 :(得分:1)
SIGNAL
行中的connect
宏调用必须使用SIGNAL(sent(QString))
明确地通知参数。
此外,信号由创建的对象发出,但您提供的代码片段正在尝试将其连接到上下文对象中。你需要的东西是:
QObject *tempitem = tempview.rootObject();
文档中有complete example覆盖。