原文地址::http://blog.sina.com.cn/s/blog_a6fb6cc90101iang.html

相关文章

1、QtableView中添加复选框----https://www.cnblogs.com/tianxxl/p/11857993.html

2、如何在QTableView中增加QCheckBox----https://blog.csdn.net/lingsnoopy/article/details/88404773

3、在QTableView中使用各种自定义委托 包括ComboBox、DoubleSpinBox、CheckBox以及设置列只读----https://blog.csdn.net/GraceLand525/article/details/80590030

4、(四)Paint函数实现QTableView中增加QCheckBox的方法----https://blog.csdn.net/qimo601/article/details/84222099?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-9.vipsorttest&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-9.vipsorttest

5、在QTableWidget中添加QCheckBox并居中----https://blog.csdn.net/u014378771/article/details/90045880?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.vipsorttest&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.vipsorttest

6、Qt之QTableView添加复选框(QAbstractItemDelegate)----https://blog.csdn.net/weixin_34082177/article/details/90524833?utm_medium=distribute.pc_relevant_download.none-task-blog-2~default~BlogCommendFromBaidu~default-1.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-2~default~BlogCommendFromBaidu~default-1.nonecas

7、Qt-QtableView实现的表格中添加复选框checkBox控件----https://blog.csdn.net/Gerald_Jones/article/details/106594052?utm_medium=distribute.pc_relevant_download.none-task-blog-2~default~BlogCommendFromBaidu~default-2.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-2~default~BlogCommendFromBaidu~default-2.nonecas

8、Qt 之 QTableView 添加复选框(QAbstractTableModel)----https://blog.csdn.net/liang19890820/article/details/50718340?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase

9、Qt之QHeaderView排序----https://www.cnblogs.com/itrena/p/5938375.html

使用QTableView,经常会有单选、多选、全选的需求,很多软件提供很简单、直观的方式——复选框。Qt中也可以很容易的进行实现。

    网上有一些很好的总结,请参考:http://qimo601.iteye.com/blog/1538364。
  1. 编辑委托                                                                       利用委托中重载createEditor(),激活QCheckBox,这个缺点是必须双击/选中,才能显示CheckBox控件。一般不满足实际中的直接显示的需要。
  2. 设置QAbstractTableModel的flags()函数,通过重写setData()与data()来实现。
  3. 使用QTableView的setIndexWidget(const QModelIndex &index, QWidget *widget)来实现。         此功能只应该用来显示可视区域内对应一个数据项的静态内容。如果想显示自定义的动态内容或执行自定义编辑器部件,子类化 QItemDelegate代替。也就是说,这只适合做静态数据的显示,不适合做一些插入、更新、删除操作的数据显示。
  4. 自定义委托,通过paint()方法来实现。这种方式比较复杂,但适合扩展,除了可以嵌入复选框,还可以通过绘制其它控件,按钮、图片等自定义风格。
下面就介绍最常用的方式,即方法二。
QMap用来保存选中行号以及对应的选中状态
QMap check_state_map; 
setData()方法主要用来设置是否被选中,然后将对应的状态保存到QMap中
bool TableModel::setData( const QModelIndex &index, const QVariant &value, int role )
{  if(!index.isValid())  return false;  if (role == Qt::CheckStateRole && index.column() == 0)  {  check_state_map[index.row()] = (value == Qt::Checked ? Qt::Checked : Qt::Unchecked); }return true;
} 

data()方法主要用来显示,取出QMap中的值,返回对应的状态
QVariant TableModel::data(const QModelIndex &index, int role) const
{if (!index.isValid())return QVariant();switch(role){//case Qt::TextAlignmentRole://              return Qt::AlignLeft | Qt::AlignVCenter;//case Qt::DisplayRole: //              return arr_row_list->at(index.row()).at(index.column());case Qt::CheckStateRole:if(index.column() == 0)   {   if (check_state_map.contains(index.row()))   return check_state_map[index.row()] == Qt::Checked ? Qt::Checked : Qt::Unchecked; return Qt::Unchecked;    }default:return QVariant();}return QVariant();
}

flag()方法主要设置用户可选角色,绘制出QCheckBox
Qt::ItemFlags TableModel::flags(const QModelIndex &index) const
{if (!index.isValid())  return 0;  if (index.column() == 0)  return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable;  return  Qt::ItemIsEnabled | Qt::ItemIsSelectable;
}

效果如下:

 
   如何给表头添加复选框呢?通过以上的介绍,可能很多人都会尝试以下方式来设置表头复选框:
QVariant TableModel::headerData(int section, Qt::Orientation orientation, int role) const
{if (role == Qt::CheckStateRole)   {   return Qt::Checked;}return QVariant();
}

   遗憾的是,QTableView在模型中不会调用headerData()函数的Qt::CheckStateRole,因为它与data()函数一样。为什么会出现这种现象呢?因为Qt默认并不支持表头复选框。。。那么,又通过什么方式来为表头添加一个复选框呢?
    可以阅读并参考:How can I insert a checkbox into the header of my view?,通过自定义QHeaderView来实现,这里就不再过多赘述了。
注:
   技术在于交流、沟通,转载请注明出处并保持作品的完整性。
   作者:╰☆奋斗ing❤孩子`  原文:http://blog.sina.com.cn/s/blog_a6fb6cc90101iang.html。

QTableView添加复选框相关推荐

  1. html设置复选框图片,css实现图片右上角添加复选框的方法

    css实现图片右上角添加复选框的方法 发布时间:2020-06-15 10:59:23 来源:亿速云 阅读:221 作者:Leah 这篇文章给大家分享的是css实现图片右上角添加复选框的方法,相信大部 ...

  2. C#ListView控件添加复选框并获取选中的数目

    1.添加复选框:listView1.CheckBoxes = true; 2.选中listview并获取选中的数目: private void listView1_ItemChecked(object ...

  3. 中添加复选框_Word/excel中在方框中打钩/叉的符号,简单方便快捷

    方法1:插入特殊符号 将光标定位于需要打钩的地方,选择[插入]--[符号]--[其他符号]--更改字体为[Windings2] 方法2:使用快捷键 从上面的截图中可以看到设置快捷键,所以在插入特殊符号 ...

  4. 组合框里添加复选框的方法

    组合框可以看作是列表框和文本框的组合,因其占据的空间少,使用操作方便,常被界面设计人员用于界面开发设计中,在有限个输入的条件下,组合框常用来代替文本框,这样从用户使用角度来看,更趋人性化,所见即所得. ...

  5. excel添加复选框的两种做法

    内容提要:文章介绍excel添加复选框的方法,通过控件命令和VBA实现批量添加复选框.对Excel感兴趣的朋友可加Excel学习交流群:284029260(www.itblw.com) excel添加 ...

  6. MFC中CListCtrl添加复选框,实现单选

    记录MFC项目中CListCtrl添加复选框,实现单选步骤 添加复选框 绑定控件变量 CListCtrl m_ctrList; OnInitDialog函数中添加 m_ctrList.SetExten ...

  7. 使用JavaScript动态添加复选框Checkbox

    首先,使用JS动态产生Checkbox可以采用如下类似的语句: var checkBox=document.createElement("input"); checkBox.set ...

  8. 给element的select添加复选框

    需求:要求给select多选的时候,给下拉框前加上复选框样式 element select原样式 需要更改后的样式 html <el-selectv-model="searchObj. ...

  9. layui添加复选框_layui复选框使用介绍

    layui复选框: 效果图 layui复选框,一个主的复选框控制多个从复选框,主复选框和从复选框的颜色不一样 layui复选框的样式,都是在选然后才会有的,所以直接通过css设置就实现不了了.只可以通 ...

最新文章

  1. VTK修炼之道52:图形基本操作进阶_多分辨率策略(模型抽取的三种方法)
  2. Request load debugging - ERP side
  3. 微信公众号(考试系统)出现额外的弹框,导致页面关闭,且不保存记录
  4. 美人秀色空绝世,我用PS-GAN试伊妆
  5. Mr.J--HTTP学习笔记(二)-- URL详解
  6. 使用Json封装scroll,已处理其兼容性问题
  7. 关于机器学习 Machine Learning中loss函数参数正则化的一点思考
  8. Python面向对象中的多态与静态语言(C++,Java)的区别
  9. 【动画消消乐】HTML+CSS 自定义加载动画 055
  10. wpa_supplicant详解
  11. 回顾2017、展望2018
  12. 编码应该运筹帷幄之中,决胜千里之外
  13. Android12之OpenSL ES中IObject_Realize和CEngine_Realize区别(十四)
  14. 【IOS学习之工具学习】sublime text mac(代码编辑器)
  15. OJ 1308 让人头疼的“双十一”
  16. 第四十七章 SQL命令 GRANT(一)
  17. WE LUCKY小幸运咖啡的自我介绍
  18. 读围城论方鸿渐与孙柔嘉的爱情
  19. 基于HCE移动支付研究报告
  20. CATIA转的STP打开什么都没有_当solidworks软件版本低时如何打开高版本文件?

热门文章

  1. 504 gateway timeout解决方法
  2. 监督学习(supervised learning)与非监督学习(unsupervised learning)
  3. VS +QT 手动添加Q_OBJECT 报错问题解决
  4. 使用Travis-CI自动部署博客
  5. ncl如何添加线shp文件_NCL画图个例讲解.pdf
  6. power bi 雷达图_星载雷达与C波段地基雷达数据一致性个例分析 | 新文速递
  7. 数字图像处理第八章----图像压缩
  8. web项目修改favicon.ico图标
  9. stata foreach循环语句的使用
  10. Transformer拿下CV顶会大奖,微软亚研获ICCV 2021最佳论文