描述
QSqlRelationalDelegate类
提供了一个委托,用于显示和编辑来自QSqlRelationalTableModel
的数据。
与默认委托不同,QSqlRelationalDelegate
为作为其他表的外键的字段提供了一个组合框。
要使用该类,只需在带有QSqlRelationalDelegate
实例的视图上调用QAbstractItemView::setItemDelegate()
;
Ex:
关系表模型示例(如下所示)演示了如何将QSqlRelationalDelegate
与QSqlRelationalTableModel
结合使用,为表提供外键支持。
重写
createEditor
如果存在关联模型,则创建一个QComboBox
,并将其设置为该列的单元格编辑器。
setModelData
如果存在关联子模型和ComboBox
编辑器,它就使用combo->currentIndex()
获取当前ComboBox
选中项的索引,使用sqlModel->setData
将选中项的值设置到主数据模型的index
位置。这里使用了两次sqlModel->setData
,分别将选中项的“显示值”和“编辑值”设置到主数据模型中,其中“显示值”是通过sqlModel->relation(index.column()).displayColumn()
获取的子模型中的列数据,而“编辑值”是通过sqlModel->relation(index.column()).indexColumn()
获取的子模型中指定的列数据
注意
结论
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。