无法在QML中捕获来自C++的信号

ryoqjall  于 2023-08-09  发布在  其他
关注(0)|答案(1)|浏览(139)

我正在尝试将一些QStringc++传输到QML。以下是我到目前为止所做的步骤。
1.创建了一个继承自QObject的类,并在其中定义了signal

class exampleClass: public QObject {

Q_OBJECT

signals:
void mySignal (QString myStr);

}

字符串
1.在类实现的某个地方,我emitsignal,即

void exampleClass::exampleFtn( . . . ){
.
.
qDebug("Before transmitting Signal");        // This gets triggered
emit mySignal ("Hello from CPP");

}


1.在我的main.cpp中,我已经初始化了这个类,并将其暴露给QML

int main(...) {

.
.
exampleClass *exampleObj= new exampleClass(&app);
Engine.rootContext()->setContextProperty("exampleObj",  exampleObj);
}


1.最后,在QML中,我连接了signal,即

Window {

.
.
Connections {
        target: exampleObj
        function mySignal(myStr) {
            console.log("signal from C++ recieved !")    // Doesn't get triggered
            console.log(myStr)                           //  Doesn't get triggered
        }
    }
}

c3frrgcw

c3frrgcw1#

Connections中连接到名为foo的信号的语法是function onFoo() { ... }。在您的情况下,它将是:

Connections {
    target: exampleObj
    function onMySignal(myStr : string) { // the type annotation doesn't hurt
        console.log("signal from C++ received !")
        console.log(myStr)
    }
}

字符串

相关问题