当前位置: 首页 > 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://wiki.neutronadmin.com/news/73076/

相关文章:

  • 网站开发设计公司块位顺德电子商务网站建设
  • apache 配置网站地址东莞网站建设 汇卓
  • 网站开发e r图用自己主机做网站
  • 深圳 企业网站建设中国企业500强排行榜2021
  • 东胜网站制作中电建铁路建设公司网站
  • icp网站域名怎么填写乔拓云的品牌推广方案
  • 淘宝网网站开发沃尔沃公司网站建设
  • 做神马网站快速排国内上市的网络公司排名
  • 泌阳专业网站建设wordpress 置顶特色
  • 深圳制作网站主页wordpress在国内很慢
  • 支付网站建设的分录设计有特色的网站
  • 大一学生做的网站游戏网
  • 怎样提升网站流量俱乐部网站方案
  • 绵阳优化网站排名wordpress修改网站菜单位置
  • 自己做的网站如何上线百度竞价推广运营
  • 各种网站推广方案是什么
  • 深圳建设工程招投标网站可以做审计初级题的网站
  • 浠水做网站的建立企业网站要多少钱
  • 建宣传网站随州建设网站
  • 营销网站制作流程wordpress邮箱模板
  • 快速优化网站排名软件婚庆公司
  • 沈阳高铁站dw怎么导入网站模板
  • wordpress笑话站主题浙江建设信息港网址
  • 建设工程监理是干什么的昆明市网络优化案例
  • 网站项目综合设计作业 代做番禺人才网车床工铣床工招聘
  • 带着做计算机项目的网站k歌里的相片是通过网站做的吗
  • 坑梓网站建设信息禅城网站建设费用
  • 学校建设评建工作网站珠海网站设计平台
  • 订阅号自定义可以做链接网站不知名的集团门户网站建设费用
  • 网站建设需要的客户资料黄页88企业名录