【问题标题】:connect c++ object signal to QML signal handler with enum parameter使用枚举参数将 c++ 对象信号连接到 QML 信号处理程序
【发布时间】:2017-06-14 23:04:42
【问题描述】:

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

【问题讨论】:

  • 如果我输入信号 wifiStatusChanged(NetworkManager.WIFIStat wifiStatus);我得到:错误:意外的令牌“。”
  • 好的。现在很清楚这是什么问题。我读了答案。

标签: c++ qt qml


【解决方案1】:

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

signal wifiStatusChanged(var wifiStatus);

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多