17

升级到 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
    }
}

其中onLogsReady是在类中定义的信号AppProxy

class AppProxy : public QObject {
  Q_OBJECT
  Q_DISABLE_COPY(AppProxy)

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

 signals:
  void logsReady(QString logs);

// ...
};

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

4

3 回答 3

27

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

Connections {
    target: AppProxy

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

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

于 2020-06-10T06:47:03.700 回答
0

除了@luffy 和@Lidekys 解决方案,在我的情况下,将此行添加到项目的 pro 文件中即可解决问题。

DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
于 2021-03-24T11:34:46.090 回答
-1

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

不确定这是否有帮助,只是想添加到问题中。

于 2021-01-14T09:54:43.083 回答