pyqt在QTreeView中获得选中数据项(单击数据项)的信息
来源:互联网 发布:武汉网络调查公司 编辑:程序博客网 时间:2024/05/16 17:22
首先,要讲一下QT中item、model、view的关系。item是一条数据项,类似表格中的一行,model是数据模型,类似一张表,view则是将这个model这张表显示出来的外在表现。以demo中的simpletreemodel为例,在这个程序中,用了TreeItem、TreeModel两个自定义类,并且TreeModel继承了QAbstractItemModel抽象类。在构造TreeModel时,TreeItem的对象作为结点,被依次加入model的树中,在TreeModel类中比较重要的参数一个是index,另一个是role,在parent、data等接口函数中均有使用。其中index是QModelIndex类型,可以用来表示结点的位置信息,比如第几行、第几列,还可以通过internalPointer()函数,获得该结点上载入的TreeItem对象的指针,从而获得结点上的文字等信息。role则是用来表示结点的用途,比如是否是checkbox、还是图标,等等。
在simpletreemodel这个例子中,TreeModel先将TreeItem的对象逐个加入到自己的tree中,然后TreeModel再在作为一个QTreeView对象的model被加载。在这个demo中,我发现:当单击一个数据项时,程序无法捕获这个操作,也不能知道到底哪个Item被选中了。于是google、百度了一番,发现了一个解决方案,先发到这里,供大家参考:
1.首先自己实现一个QTreeView的子类TreeView:
其中,将click信号与槽函数getCurrentIndex绑定,其传递参数为数据项index。
在getCurrentIndex函数中,通过index.internalPointer()函数,又获得了TreeItem对象的指针,就可以访问TreeItem中的成员变量了。如果需要响应双击事件,则将clicked(QModelIndex)换为doubleClicked(QModelIndex)即可
2.再到__main__中,将原来的代码改为:
也就是采用新的TreeView类来显示model,运行之后,就能看到效果了,这时单击数据项,就会弹出窗口。
- pyqt在QTreeView中获得选中数据项(单击数据项)的信息
- 在datagrid控件中获取数据项中各列的数据内容
- 在DataGrid控件中编辑数据项
- C#之WinForm基础 comboBox1.SelectedIndex得到控件中被选中数据项的索引值
- Silverlight中ComboBox的数据项刷新
- 取出数组中不重复的数据项
- 找出数列中不存在的数据项
- 126.如何在DataGrid控件中实现数据项的编辑、更新、取消
- 教你如何在多个控件中拖动数据项
- GridVIew控件选中、编辑、取消、删除数据项
- SQL:(Group by 中 )取某极值的其他数据项
- SQl server 2008 导出脚本中包括数据项的方法
- List 中使用 MXML 自定义组件的数据项访问方法
- DataGrid数据项的手工添加
- 排序不同长度的数据项
- 排序不同长度的数据项
- 分享一个程序猿在开发流程表单中关于数据项有导出没导入功能的解决办法
- 数据项类型
- bcp数据表导出
- debug编程实例
- ARM汇编之寻址方式
- 重启
- 红帽视频教程 RHCA全套5本书的完整视频+RHCA学习资料/送RHCE视频
- pyqt在QTreeView中获得选中数据项(单击数据项)的信息
- XIP - eXecute In Place
- GNASH 移植
- 转贴总结的非常好的JVM内存及垃圾回收
- 基于S3C2440的busybox的移植
- Hql max以及cast简单示例
- 驱动模块使用SPI总线范例
- ASP.NET项目开发中的异常处理
- 在Excel在用ADO读写数据库