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

时间:2017-06-14 23:04:42

标签: c++ qt qml

我有以下c ++插件代码:

class NetworkManager : public QObject
{
Q_OBJECT

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

 Q_PROPERTY(WIFIStat wifiStatus READ wifiStatus NOTIFY wifiStatusChanged)

我希望连接到QML中的信号处理程序:

signal wifiStatusChanged(WIFIStat wifiStatus);

onWifiStatusChanged: {
    console.log(wifiStatus)
}

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

但是我得到了以下错误:

Invalid signal parameter type: WIFIStat

如何在处理函数中定义枚举NetworkManager::WIFIStat类型参数?

1 个答案:

答案 0 :(得分:0)

我在处理函数参数中使用var解决了问题:

signal wifiStatusChanged(var wifiStatus);

但我最后使用了另一种方法: https://stackoverflow.com/a/29202462/2614418

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