升级到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 中所述(。
不确定这是否有帮助,只是想补充这个问题。