我有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'参数会丢弃限定符[-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()
中,但它不起作用。
所以,我没有想法。
任何帮助?
感谢。
答案 0 :(得分:3)
问题是QList::at()
会返回const T &
。请改为使用QList::operator[]
:parameters[j].value = QVariant(myQLineEdit->text());
。