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



升级到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);
// ...
};

我想知道如何抑制此警告。

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

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

您可以在此处阅读有关它的更多信息: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

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

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

相关内容

  • 没有找到相关文章

最新更新