找回密码
 立即注册
Qt开源社区 门户 查看内容

PYQT中如何获取Tableview中单击的单元格内容

2019-6-5 09:37| 发布者: admin| 查看: 4638| 评论: 0

摘要: 问题描述在QT编程中,我们经常会用到TableView这个控件,他可以通过自定义的数据模型来显示数据,出镜率非常高。但本篇文章,我重点不是来介绍TableView控件的具体用法。而是介绍在使用该控件中遇到如下场景的解决办 ...


问题描述


在QT编程中,我们经常会用到TableView这个控件,他可以通过自定义的数据模型来显示数据,出镜率非常高。
但本篇文章,我重点不是来介绍TableView控件的具体用法。而是介绍在使用该控件中遇到如下场景的解决办法,希望能对你有用。
场景描述如下:

在TableView控件中,需要监测用户单击事件,进而获取本次点击的单元格或者行。注意不是选中。该如何做?

解决思路


  • 根据需求,首先得清楚,用户点击后,具体要实现什么样的功能。编写这个函数,我们况且称他为消息接收函数吧。

  • 控件与接收函数之间绑定clicked事件

接收函数


在接收函数中,我们如何知道当前点击是哪一行?这块比较关键。

tableview的clicked信号有一个QModelIndex的参数&index,直接调用index.data().tostring()就可以获取数据了
上面这句话描述,可以通过事件携带的index,来获取具体的行号.

类似用法如下:
1def doubleClickedHandle(self, index):
2    text = self.model().item(index.row(),0).text()
3    #单元格没有值时会出错,None type没有text()这个方法,如有需要自己catch
4    self.doubleClickedItem.emit(text)

事件绑定


这个就比较简单。
1table.clicked.connect(self.doubleClickedHandle)

最后


关于自定义信号,需要掌握以下几个点:

  1. 信号的声明: 信号名 = pyqtSignal(类型)

  2. 信号的触发: 信号名.emit(信号内容)

  3. 信号的接收: 信号所在类实例.信号名.connect(接收函数)

END





----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:脚本开发,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了