与‘operator[]’不匹配(操作数类型为‘QJsonDocument’

no match for ‘operator[]’ (operand types are ‘QJsonDocument’

我在 Windows 上使用 QT Creator 构建了一个快速服务器,一切正常,我在我的另一台机器上尝试了 运行 相同的代码(Ubuntu) 并且我在这一行中特别遇到错误:

QString max_colorbar = doc["colorbar"].toString();

我得到的错误是:

no match for ‘operator[]’ (operand types are ‘QJsonDocument’ and ‘const char [9]’)

让我感到困惑的是,如果相同的代码在Windows(它是跨平台的)上工作,为什么我需要更改任何东西,我认为这可能是因为 QT 版本,但我检查了我的版本linux 它是:

QMake version 3.1
Using Qt version 5.9.5

我做错了什么吗?

这是因为 const QJsonValue QJsonDocument::operator[](const QString &key) const 功能是在 Qt5.10 中引入的,而您 运行 在 Qt5.9.5 中引入。

您可以更改代码

QString max_colorbar = doc["colorbar"].toString();

下面也是基于Qt5.9.5构建的

QString max_colorbar = doc.object().value("colorbar").toString();