我在Qt中使用SQLite数据库。在用信息填充QTableWidget时,我想检查作为QVariant接收的值是整数,双精度还是字符串:
// query something here, put in in var named 'query'
while(query.next()){
// insert new row
for (int i=0; i<columnCount; i++){
if(query.value(i).toInt()!=0){
//add integer table item with special sorting/formatting
}else if(query.value(i).toDouble()!=0){
//add double table item with special sorting/formatting
}else {
//add standard qt table item
}
}
}
问题是当使用 toInt()时,double会被转换为整数,反之亦然,这就是为什么所有数值都被视为整数或全部被视为双精度,取决于你是哪一个先测试一下。
是否有可能正确检查数字是双数还是整数?
答案 0 :(得分:2)
要测试存储在QVariant
中的确切类型,您可以使用type()功能,然后启用它:
switch(query.value(i).type()) {
case QMetaType::Int:
// ....
break;
case QMetaType::Double:
// ...
break;
}
可以找到类型here。
另外,也许@ Victor的答案有其优点 - 我不确定QtSQL如何处理这些类型。
答案 1 :(得分:1)
您必须向sqlite_master
查询元数据。
您应该对字段type
运行单独的查询,条件name
为字段名称,tbl_name
为表名。
请参阅此处了解可用的字段类型: