如何给PyQT TableView的全选按钮添加事件监听器?
解决QTableView左上角全选按钮的点击监听问题
我懂你遇到的麻烦——单元格、行列表头的点击监听都顺利搞定了,但左上角那个全选按钮,翻遍Qt官方文档都找不到对应的信号绑定方法对吧?其实这个按钮是QTableView的隐藏子组件,没有直接暴露的接口,但我们可以通过查找子控件的方式拿到它,然后绑定点击信号。
具体实现方案
你只需要用findChild方法定位到这个角落的QAbstractButton实例,再给它绑定clicked信号就行。结合你现有的代码,修改后示例如下:
# 导入Qt Designer创建的对话框 dialog = x.UI_Dialog() table = dialog.tableSchedule table.setModel(___) # 使用继承自QtCore.QAbstractTableModel的自定义模型 # 单元格点击监听 table.clicked.connect(lambda: print('cell')) # 列头点击监听 table.horizontalHeader().sectionClicked.connect(lambda: print('col')) # 行头点击监听 table.verticalHeader().sectionClicked.connect(lambda: print('row')) # 左上角全选按钮的点击监听 corner_button = table.findChild(QAbstractButton) if corner_button: corner_button.clicked.connect(lambda: print('select all'))
补充说明
通过查看QTableView的子组件列表,能发现它确实包含一个QAbstractButton实例,这就是我们要找的全选按钮。为了避免找不到控件导致报错,建议加个判断,确保拿到按钮后再绑定信号。
内容的提问来源于stack exchange,提问作者Edcel Celiz
相关产品推荐
相关产品推荐

