传递'const QVariant' 'this'参数会丢弃限定符 [-允许]

passing 'const QVariant' as 'this' argument discards qualifiers [-fpermissive]

本文关键字:允许 QVariant const this 参数 传递      更新时间:2023-10-16

我有这样的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;
    }
}

parameters是一个QList<StorageConfig>

但是我得到了这个错误:

将"const QVariant"作为"this"参数传递会丢弃限定符 [-fallowive]

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

我完全理解这个问题:myQLineEdit->text()返回一个const,我不能断言const到一个non-const变量。 没关系。

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

只是想摆脱我QString上的这个const. 但我不知道怎么做。我尝试过使用std::remove_const并将text()存储在临时QString中,但没有奏效。所以,我没主意了。

有什么帮助吗?

谢谢。

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