与‘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();
我在 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();