PySide 2 "QVariantMap" 信号 QT5.15 -> QT5.12

PySide 2 "QVariantMap" Signal QT5.15 -> QT5.12

我在使用 QVariantMap 的 QT 5.12 中处理 Signal() 时遇到问题。

我的示例在 QT 5.15 和 Python 3.8 中运行良好,但它需要 与 QT 5.12 和 Python 3.7.

兼容

信号似乎是从 Python 发出的,但我的日志功能 未被调用。

这些版本与 QVariantMap 处理之间是否有任何变化?

我附上了重要的线条和 link 来完成示例。

class WeatherWrapper(QObject):

dataChanged = Signal()

@Property("QVariantMap", notify=dataChanged)
    def data(self) -> dict:
        return self._data
  self.dataChanged.emit()
Connections {
        target: weather
        function onDataChanged() {
        console.log("recevied dataChanged signal")
        }

        }

完整样本:https://github.com/lutzh86/qmlweathertest/

这不是 QVariantMap 的问题。 Qt 出于某种原因决定更改 Connections 对象的语法。在5.12中,你需要这样做:

Connections {
    target: weather
    onDataChanged: {
        console.log("received dataChanged signal")
    }
}

如果您在 5.15 上这样做,您将收到恼人的运行时警告,提示该语法已被弃用,但它仍然有效。