3

我在 QML 中收到了一个信号,我想连接到 C++ 中定义的插槽。但是我的代码失败了,我收到了错误:

QObject::connect: ../qt_cpp/mainwindow.cpp:66 中没有这样的信号 QDeclarativeContext::sent()

这是一个 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"
        }
    }
}
4

1 回答 1

1

行中的SIGNAL宏调用connect必须显式通知参数,使用SIGNAL(sent(QString)).

此外,信号是由创建的对象发出的,但您提供的代码片段正试图将其连接到上下文对象中。您将需要以下内容:

QObject *tempitem = tempview.rootObject();

文档中有一个完整的示例。

于 2013-08-28T04:10:28.220 回答