QVariant转QString时随机出现内容不符问题求助
Qt 5.15.10 QVariant转QString随机出现内容不一致问题
场景与代码实现
- 我使用
QTableView展示数据,部分列的内容为方括号包裹、逗号分隔的数组格式,例如[20,1647.8,2101.2,1911.6,..., -1.6915]——第一个元素是表示数组长度的整数,其余均为浮点数。 - 为了拆分这些逗号分隔的值,我通过
QModelIndex获取单元格内容,将QVariant转换为QString后进行后续处理,核心代码如下:
QModelIndex index = myTable->model()->index(row,col,QModelIndex()); QVariant arrayQVar = myTable->model()->data(index); QString arrayStr = arrayQVar.toString(); //.... 后续其他处理,上述代码会被多次执行
随机异常现象
存在约万分之一的概率,arrayStr与arrayQVar的内容出现不一致:
- 打印
arrayQVar输出示例:
QVariant(QString, "[20,1647.8,2101.2,1911.6,756.84...]")
- 对应打印
arrayStr输出示例:
[20,-4388.4,-6596.3,-6368.5,...]
异常时除第一个值保持一致外,其余所有值完全不同,且问题随机发生在不同单元格,无固定触发规律。
运行环境
Qt 5.15.10 MinGW 64位版本,上述代码运行在非GUI线程中。
疑问
我原本认为QVariant转QString是基础转换操作,不应出现此类问题。现在怀疑是否因为数组第一个元素是整数(如20),后续为浮点数,格式不统一导致异常?是否需要将第一个值改为20.0这类浮点数格式来尝试解决?
内容的提问来源于stack exchange,提问作者SuperNoooob
相关产品推荐
相关产品推荐

