QML Connections:不推荐使用 Connections 中隐式定义的 onFoo 属性

QML Connections: Implicitly defined onFoo properties in Connections are deprecated

升级到 Qt 5.15 时出现以下错误消息:

QML Connections: Implicitly defined onFoo properties in Connections are deprecated.
Use this syntax instead: function onFoo(<arguments>) { ... }

下面粘贴对应的QML代码

Connections {
    target: AppProxy

    onLogsReady: function(logs) {
        textLogs.text = logs
    }
}

其中 onLogsReadyAppProxy class 中定义的信号:

class AppProxy : public QObject {
  Q_OBJECT
  Q_DISABLE_COPY(AppProxy)

 public:
  AppProxy(QObject* parent = 0);
  ~AppProxy();

 signals:
  void logsReady(QString logs);

// ...
};

我想知道如何抑制这个警告。

在 Qml 5.15 中有一个新的连接语法。在您的情况下,它看起来像这样:

Connections {
    target: AppProxy

    function onLogsReady(logs) {
        textLogs.text = logs
    }
}

您可以在此处阅读更多相关信息:https://doc.qt.io/qt-5/qml-qtqml-connections.html

@luffy 回答正确,但不完全。如果您只是进行这些更改,至少对我而言,它并没有解决问题。修复它的是在受这些更改影响的 qml 文件中添加“import QtQml 2.15”(如 https://doc.qt.io/qt-5/qml-qtqml-connections.html 中所述)。

不确定这是否有帮助,只是想补充问题。

在我的案例中,除了@luffy 和@Lidekys 解决方案外,将此行添加到项目的 pro 文件中也解决了问题。

DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0