如何设置/读取QSqlRelationalTableModel列的属性和约束?

时间:2012-04-12 20:06:11

标签: qt qt4.7 qsqltablemodel

有没有办法检查QSqlRelationalTableModel中每列的属性和约束?例如,我想询问我的QSqlRelationalTableModel对象,某个列是否可以包含空值,或者哪个数据类型对该列有效。

2 个答案:

答案 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())