有没有办法检查QSqlRelationalTableModel
中每列的属性和约束?例如,我想询问我的QSqlRelationalTableModel
对象,某个列是否可以包含空值,或者哪个数据类型对该列有效。
答案 0 :(得分:2)
您需要为模型的每一列获取QSqlField
值,该值由
QSqlRecord record = model->database().record(model->tableName());
QSqlField field = record.field(columnIndex);
然后您将能够使用QSqlField::requiredStatus()
检查字段是否为空(如果驱动程序支持查询该属性)并使用QSqlField::type()
获取其数据类型。
答案 1 :(得分:2)
从alexisdm上面的回答中,我编写了这个简单的代码片段来输出表中每个字段的属性。在此处发布,以便为其他感兴趣的人保存输入。
我还发现了一个问题:如果你使用table_model::record()
或table_model::record(int)
,你会得到一些属性的意外(对我而言),例如,isAutoValue
似乎总是返回false,即使对于在数据库中指定为自动增量字段的字段。但是,你确实为typeID()
获得了真正的价值(虽然我还没能确定typeID()是什么),而typeID()
总是为我使用{{1}返回-1 }。
model->database().record(model->tableName())