首页/新闻资讯/正文详情

Qt自定义委托实现定制输入的效果

发布时间:2026/11/10 19:02:01 来源:云帆数科 栏目:资讯中心
Qt自定义委托实现定制输入的效果
Qt自定义委托实现定制输入的效果参考博客link 。以下是根据这篇博客修改而来。并写上了自己在编写过程中觉得应该注意的地方。widget.cpp#includewidget.h#includeui_widget.hWidget::Widget(QWidget*parent):QWidget(parent),ui(newUi::Widget){ui-setupUi(this);QVBoxLayout*vboxnewQVBoxLayout;QTreeView*treeViewnewQTreeView;myDelegate*delegatenewmyDelegate;QStandardItemModel*modelnewQStandardItemModel;//QTreeView常用的设置treeView-setSelectionMode(QAbstractItemView::SingleSelection);treeView-setSelectionBehavior(QAbstractItemView::SelectItems);treeView-setAlternatingRowColors(true);//设置标题model-setHorizontalHeaderLabels(QStringList()QStringLiteral(年级/班级)QStringLiteral(姓名)QStringLiteral(分数)QStringLiteral(评价));//表头相关的设置treeView-header()-setStretchLastSection(true);//最后一列自适应宽度//往model里面添加数据//一级节点只有 班级列的数据for(inti0;i5;i){QStandardItem*itemnewQStandardItem(QStringLiteral(%1年级).arg(i1));model-appendRow(item);for(intj0;j5;j){QStandardItem*item1_0newQStandardItem(QStringLiteral(%1班).arg(j1));QStandardItem*item1_1newQStandardItem(QStringLiteral(Tom));QStandardItem*item1_2newQStandardItem(QStringLiteral(100));QStandardItem*item1_3newQStandardItem(QStringLiteral(差));item-appendRow(QListQStandardItem*()item1_0item1_1item1_2item1_3);}}treeView-setModel(model);treeView-setItemDelegate(delegate);vbox-addWidget(treeView);setLayout(vbox);}Widget::~Widget(){deleteui;}widget.h#ifndefWIDGET_H#defineWIDGET_H#includeQWidget#includeQVBoxLayout#includeQTreeView#includeQStandardItemModel#includemydelegate.hnamespaceUi{classWidget;}classWidget:publicQWidget{Q_OBJECTpublic:explicitWidget(QWidget*parentnullptr);~Widget();private:Ui::Widget*ui;};#endif// WIDGET_Hmydelegate.cpp#includemydelegate.hmyDelegate::myDelegate(QObject*parent):QStyledItemDelegate(parent){}QWidget*myDelegate::createEditor(QWidget*parent,constQStyleOptionViewItemoption,constQModelIndexindex)const{Q_UNUSED(option);//只有第三列的item才使用qcombox进行编辑if(index.column()3){QComboBox*boxnewQComboBox(parent);box-addItems(QStringList()QStringLiteral(优)QStringLiteral(良)QStringLiteral(差));returnbox;}returnnullptr;}voidmyDelegate::setEditorData(QWidget*editor,constQModelIndexindex)const{QString strindex.data(Qt::EditRole).toString();QComboBox*boxstatic_castQComboBox*(editor);for(inti0;ibox-count();i){if(strbox-itemText(i)){box-setCurrentIndex(i);}}}voidmyDelegate::setModelData(QWidget*editor,QAbstractItemModel*model,constQModelIndexindex)const{QComboBox*boxstatic_castQComboBox*(editor);model-setData(index,QVariant(box-currentText()),Qt::EditRole);}voidmyDelegate::updateEditorGeometry(QWidget*editor,constQStyleOptionViewItemoption,constQModelIndexindex)const{Q_UNUSED(index);editor-setGeometry(option.rect);}mydelegate.h#ifndefMYDELEGATE_H#defineMYDELEGATE_H#includeQObject#includeQStyledItemDelegate#includeQComboBoxclassmyDelegate:publicQStyledItemDelegate{Q_OBJECTpublic:explicitmyDelegate(QObject*parentnullptr);QWidget*createEditor(QWidget*parent,constQStyleOptionViewItemoption,constQModelIndexindex)constoverride;voidsetEditorData(QWidget*editor,constQModelIndexindex)constoverride;voidsetModelData(QWidget*editor,QAbstractItemModel*model,constQModelIndexindex)constoverride;voidupdateEditorGeometry(QWidget*editor,constQStyleOptionViewItemoption,constQModelIndexindex)constoverride;signals:publicslots:};#endif// MYDELEGATE_H1.在重写 createEditor 函数时一定要指定combox的父亲如果没有指定父亲那么combox将会以一个独立的窗口打开。2. createEditor函数的理解。 原本的qstanditem你想用什么控件去代替它如果保持原样那么就返回null3. createEditor函数的理解。当你双击或者使用其它方式时既想要编辑这个item时。默认它应该显示什么数据4. setModelData函数的理解。当你编辑完这个item时想要修改对应model的数据为什么。5. 自定义输入效果时不能将item设置为不能编辑的状态。

相关推荐

STM32嵌入式开发入门到实战:从芯片选型到项目避坑全指南
STM32嵌入式开发入门到实战:从芯片选型到项目避坑全指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/9 9:40:47

ESP32-S3 vs C3 Mini:PSRAM与USB选型指南,避开驱动坑
ESP32-S3 vs C3 Mini:PSRAM与USB选型指南,避开驱动坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 19:58:08

显示驱动板卡接口协议兼容性深度解析:HDMI/LVDS/DP/VGA四协议共存实战指南
显示驱动板卡接口协议兼容性深度解析:HDMI/LVDS/DP/VGA四协议共存实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 8:21:11

电工证的报考年龄要求值不值得考?安阳新手必看避坑指南
电工证的报考年龄要求值不值得考?安阳新手必看避坑指南

电工证的报考年龄要求值不值得考?安阳新手必看避坑指南 之前考的证在外省能不能转过来?其实, 电工证的报考年龄要求 是不少新手第一次报考时最关心的问题之一。很多人担心自己年纪大了,会不会被拒之门外,但事实并非如此。在河南安阳,像你这样的初次报… · 2026/11/11 13:33:42

低压电工证三相交流培训机构怎么选?内部消息教你避开复审陷阱
低压电工证三相交流培训机构怎么选?内部消息教你避开复审陷阱

低压电工证三相交流培训机构怎么选?内部消息教你避开复审陷阱 证书过期了不知道怎么复审延期?很多人压根不知道低压电工证三相交流的操作证还能延期,更别说怎么操作了。特别是像我这样在濮阳做项目现场管理员的,经常接触各种特种作业人员,发现不少同事因… · 2026/11/11 13:33:42

嵊州考电工证培训机构怎么选?2026河南最新政策全解析
嵊州考电工证培训机构怎么选?2026河南最新政策全解析

嵊州考电工证培训机构怎么选?2026河南最新政策全解析 急需特种作业证才能上岗找工作,这事儿真的不能再拖了。尤其在2026河南最新政策实施后,特种作业证的报考流程、考试内容和持证要求都有了新的变化。如果你在嵊州,想找一家靠谱的考电工证培训机… · 2026/11/11 13:33:42

诏安电工证值不值得考?工地太忙根本没时间复习考试
诏安电工证值不值得考?工地太忙根本没时间复习考试

诏安电工证值不值得考?工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,这是很多一线电工的共同心声。特别是在诏安这样的施工活跃地区,电工证是从事电工作业的硬门槛。但问题来了—— 诏安电工证值不值得考… · 2026/11/11 13:33:42

女电工作业日常怎么考?学历不高怕报不上名?其实你也可以!
女电工作业日常怎么考?学历不高怕报不上名?其实你也可以!

女电工作业日常怎么考?学历不高怕报不上名?其实你也可以! 你可能正坐在家里的沙发上,看着朋友圈里的“电工小姐姐”在施工现场穿梭,心里想着: 学历不高怕报不上名 ,我真的能考电工证吗? 多少钱… · 2026/11/11 13:33:42

山东聊城电工证查询最新内部消息,别再被中介坑了
山东聊城电工证查询最新内部消息,别再被中介坑了

山东聊城电工证查询最新内部消息,别再被中介坑了 不知道去哪报名怕被中介坑?山东聊城电工证查询成了很多人的刚需,但信息混乱、真假难辨,一不小心就踩坑。最近有不少人私信我,说在聊城找电工证培训机构,结果要么被坑钱,要么证书根本查不到。其实这事儿… · 2026/11/11 13:32:42

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/11 12:18:07

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/10 17:46:39

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/10 17:11:43

_中职电工证最新政策解读
_中职电工证最新政策解读

中职电工证在哪考?工地太忙根本没时间复习考试的救星来了 工地太忙根本没时间复习考试,这是很多正在备考 中职电工证 的建筑工友的真实写照。你不是不想考,而是真的没时间。但别担心,这期内容是 新乡初次报考人员… · 2026/11/11 0:00:52

昆明电工证培训价格值不值得考?老电工告诉你真相
昆明电工证培训价格值不值得考?老电工告诉你真相

昆明电工证培训价格值不值得考?老电工告诉你真相 之前考的证在外省能不能转过来?这个问题是很多在外地打工、换城市生活、或者是想在昆明发展的朋友最关心的。尤其是现在云南发展快,很多企业都在招持证上岗的电工,如果你手头有证但不在本地,那这个证是不… · 2026/11/11 0:00:52

特种电缆张工网上查询全攻略:外省证如何转过来
特种电缆张工网上查询全攻略:外省证如何转过来

特种电缆张工网上查询全攻略:外省证如何转过来 之前考的证在外省能不能转过来?这是很多特种作业从业者最关心的问题,尤其是像特种电缆张工这类证书,直接关系到日常工作是否合规、能否顺利晋升。很多小伙伴因为证书归属地的问题,陷入职业发展的瓶颈,甚至… · 2026/11/11 0:00:52

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 20:19:29

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 19:22:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 17:00:47

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码