传递'const QVariant'作为'this'参数会丢弃限定符[-fpermissive]

时间:2017-06-10 13:06:29

标签: c++ qt c++11

我有struct这样:

struct StorageConfig {
    QString id;
    QString description;
    QVariant value;
};

我想将QLineEdit的值指定为StorageConfig.value的值:

for (int j=0; j<parameters.count(); j++) {
    if (parameters.at(j).id == id) {
        parameters.at(j).value = QVariant(myQLineEdit->text());
        break;
    }
}

parametersQList<StorageConfig>

但我收到了这个错误:

  

将'const QVariant'传递为'this'参数会丢弃限定符[-fpermissive]

            parameters.at(j).value = QVariant(myQLineEdit->text());

                                   ^

我完全理解这个问题:myQLineEdit->text()返回const而我无法将const分配给non-const变量。没关系。

但我的问题是......我不知道如何解决这个问题。 我无法删除const的{​​{1}}状态,因为它是内部Qt方法。 我不想将text()更改为StorageConfig.value,因为我希望以后能够对其进行修改。

我只是想在我的const上摆脱这个const。但我不知道怎么做。 我已尝试使用QString并将std::remove_const存储在临时text()中,但它不起作用。 所以,我没有想法。

任何帮助?

感谢。

1 个答案:

答案 0 :(得分:3)

问题是QList::at()会返回const T &。请改为使用QList::operator[]parameters[j].value = QVariant(myQLineEdit->text());