当前位置: 首页 > news >正文

装修公司网站源码php河北廊坊建筑模板厂家

装修公司网站源码php,河北廊坊建筑模板厂家,网页设计素材网站有哪些,郑州大搜索网站描述 QSqlRelationalDelegate类提供了一个委托#xff0c;用于显示和编辑来自QSqlRelationalTableModel的数据。 与默认委托不同#xff0c;QSqlRelationalDelegate为作为其他表的外键的字段提供了一个组合框。 要使用该类#xff0c;只需在带有QSqlRelationalDelegate实例…描述 QSqlRelationalDelegate类提供了一个委托用于显示和编辑来自QSqlRelationalTableModel的数据。 与默认委托不同QSqlRelationalDelegate为作为其他表的外键的字段提供了一个组合框。 要使用该类只需在带有QSqlRelationalDelegate实例的视图上调用QAbstractItemView::setItemDelegate(); Ex: QSqlRelationalTableModel* pModel new QSqlRelationalTableModel();pModel-setTable(person);pModel-setRelation(2, QSqlRelation(items, id, itemtype));ui-tableView-setModel(pModel);ui-tableView-setItemDelegate(new QSqlRelationalDelegate());pModel-select();关系表模型示例(如下所示)演示了如何将QSqlRelationalDelegate与QSqlRelationalTableModel结合使用为表提供外键支持。 重写 有两个重写方法: QWidget *QSqlRelationalDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem option, const QModelIndex index) constvoid QSqlRelationalDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex index) const createEditor QWidget *createEditor(QWidget *aParent,const QStyleOptionViewItem option,const QModelIndex index) const {const QSqlRelationalTableModel *sqlModel qobject_castconst QSqlRelationalTableModel *(index.model());QSqlTableModel *childModel sqlModel ? sqlModel-relationModel(index.column()) : 0;if (!childModel)return QItemDelegate::createEditor(aParent, option, index);QComboBox *combo new QComboBox(aParent);combo-setModel(childModel);combo-setModelColumn(childModel-fieldIndex(sqlModel-relation(index.column()).displayColumn()));combo-installEventFilter(const_castQSqlRelationalDelegate *(this));return combo; }上述代码实现了自定义委托的createEditor函数用于创建一个QComboBox作为单元格的编辑器通过index.model()获取主数据模型并将其qobject_cast转换为QSqlRelationalTableModel类型如果成功转换则说明该数据模型具有关联模型使用sqlModel-relationModel(index.column())获取与该列关联的子数据模型。如果该列没有关联模型它将返回0这意味着将使用默认的委托QItemDelegate来创建单元格编辑器。 如果存在关联模型则创建一个QComboBox并将其设置为该列的单元格编辑器。 子模型是通过combo-setModel(childModel)设置的其中childModel是通过sqlModel-relationModel(index.column())获取的使用sqlModel-relation(index.column()).displayColumn()获取子模型中用于显示选择项的列并将其设置为QComboBox的模型列即combo-setModelColumn为ComboBox安装一个事件过滤器使得在编辑完成后能够正确更新主数据模型最后返回ComboBox作为单元格编辑器。 setModelData void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex index) const {if (!index.isValid())return;QSqlRelationalTableModel *sqlModel qobject_castQSqlRelationalTableModel *(model);QSqlTableModel *childModel sqlModel ? sqlModel-relationModel(index.column()) : 0;QComboBox *combo qobject_castQComboBox *(editor);if (!sqlModel || !childModel || !combo) {QItemDelegate::setModelData(editor, model, index);return;}int currentItem combo-currentIndex();int childColIndex childModel-fieldIndex(sqlModel-relation(index.column()).displayColumn());int childEditIndex childModel-fieldIndex(sqlModel-relation(index.column()).indexColumn());sqlModel-setData(index,childModel-data(childModel-index(currentItem, childColIndex), Qt::DisplayRole),Qt::DisplayRole);sqlModel-setData(index,childModel-data(childModel-index(currentItem, childEditIndex), Qt::EditRole),Qt::EditRole); }上述代码实现了自定义委托的setModelData函数用于将编辑器中的数据更新到主数据模型中首先检查index是否有效如果无效则直接返回通过qobject_cast将数据模型转换为QSqlRelationalTableModel类型并使用index.column()获取正在编辑的列的索引通过sqlModel-relationModel(index.column())获取与该列关联的子数据模型如果该列没有关联模型则将其设置为0通过qobject_cast将编辑器转换为QComboBox类型并检查它们是否存在。如果不存在则说明该列没有关联子模型或者使用默认委托编辑器就调用默认委托的setModelData函数来更新数据模型然后返回。 如果存在关联子模型和ComboBox编辑器它就使用combo-currentIndex()获取当前ComboBox选中项的索引使用sqlModel-setData将选中项的值设置到主数据模型的index位置。这里使用了两次sqlModel-setData分别将选中项的“显示值”和“编辑值”设置到主数据模型中其中“显示值”是通过sqlModel-relation(index.column()).displayColumn()获取的子模型中的列数据而“编辑值”是通过sqlModel-relation(index.column()).indexColumn()获取的子模型中指定的列数据 最后完成了所有数据更新操作 注意 如果需要下拉框功能就直接用就行。 先进行自定义信号发送则需要子类化操作。 结论 记住你是最好的如果有人比你好那就假装没看见他们。
http://www.yutouwan.com/news/73076/

相关文章:

  • 自己做网站 什么软件视频网站开发计划书
  • 网站注销申请表望野眼上海话
  • 网站没快照无印良品官方网络商城
  • 网站首页布局修改德州做网站优化
  • 建材网站建设公司app开发公司掌握我的源代码吗
  • 网站开发需要什么热门网络游戏
  • 网站报错 500cpanel wordpress主题安装
  • 网站建设和维护待遇怎样高大上网站建设公司
  • 做一婚恋网站多少钱网站常见程序问题
  • 山西孝义网站开发市场调研公司收费标准
  • 网站建设与运营实验贷款网站模板
  • 长沙娱乐网站开发网站优化排名哪家好
  • 网站 建设需帷客分享 wordpress
  • wordpress建站两秒打开科技网站设计公司排名
  • 陕西建设银行官网站高淳城乡建设局网站
  • win2012r2 建设网站采集网站如何收录
  • 滦平县建设局网站重庆中技互联
  • 福安网站开发化妆品公司网站源码
  • 织梦网站档目管理空白网页程序开发基础知识
  • 做养生产品哪个网站好wordpress三栏模板
  • 网站搜索怎么做的龙岗网页设计
  • 品质培训的网站建设jsp做网站步骤
  • 建立网站小程序国内做的比较好的协会网站
  • 建设网站的好公司做阿里巴巴网站 店铺装修免费吗
  • 网站备案负责人照片公司做网站推广的价格
  • 影视视频网站怎么做浏览器网址导航网
  • 乐云seo网站建设性价比高腾讯邮箱官网
  • 网站开发语言net网站年龄和域名年龄
  • 网站后台管理怎么进短网址生成源码
  • 怎样做视频上网站赚钱建设银行网站图片大全