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

connect c++ object signal to QML signal handler with enum parameter

本文关键字:连接 QML 信号处理 程序 信号 对象 enum 参数 C++ 使用      更新时间:2023-10-16

我有以下 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类型参数?

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

signal wifiStatusChanged(var wifiStatus);

但我最终使用了另一种方法,如下所述:https://stackoverflow.com/a/29202462/2614418

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