简体   繁体   English

使用enum参数将c ++对象信号连接到QML信号处理程序

[英]connect c++ object signal to QML signal handler with enum parameter

I have the following c++ plugin code: 我有以下c ++插件代码:

class NetworkManager : public QObject
{
Q_OBJECT

...
enum WIFIStat{
    STAT_NOTINITED,
    STAT_INITED
};
Q_ENUM(WIFIStat)

 Q_PROPERTY(WIFIStat wifiStatus READ wifiStatus NOTIFY wifiStatusChanged)

and i want to connect to a signal handler in QML: 我想连接到QML中的信号处理程序:

signal wifiStatusChanged(WIFIStat wifiStatus);

onWifiStatusChanged: {
    console.log(wifiStatus)
}

Component.onCompleted: {
   network_manager.wifiStatusChanged.connect(wifiStatusChanged);
}

but i'm getting the follwing error: 但我收到以下错误:

Invalid signal parameter type: WIFIStat

How can i define the enum NetworkManager::WIFIStat type parameter int the handler function? 如何定义处理程序函数中的枚举NetworkManager::WIFIStat类型参数?

I solved the problem using var in my handler function parameter: 我在处理程序函数参数中使用var解决了问题:

signal wifiStatusChanged(var wifiStatus);

but i ended up using another approach as stated here: https://stackoverflow.com/a/29202462/2614418 但我最终使用了此处所述的另一种方法: https : //stackoverflow.com/a/29202462/2614418

Connections{
    target: network_manager
    onWifiStatusChanged: {
        console.log("Status:"+wifiStatus)
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM