Qt - QTableWidget表格操作

表格中数据清理

1、不要使用removeRow()函数了,每次只能清空一行数据(列头会被清理)

2、使用clear()函数,清空整个tableWidget(行头和列头会被清理)

3、使用clearContent()函数,清空tableWidget内容(不清理行头和列头)

 

表格中数据修改触发自定义操作

1、QTableWidget表格中的内容被修改时会触发itemChanged或cellChanged信号,

如果槽函数中对QTableWidget的单元格执行修改操作(如修改单元格内数据,修改单元格字体颜色等)

都会再次触发itemChanged或cellChanged信号然后去执行槽函数,会陷入无限循环

解决办法

1、阻塞方法blockSignals

# 进入槽函数
self.tableWidget.blockSignals(True)  # 进入阻塞模式,该对象发送的信号都会被阻塞
'''执行相关槽函数程序'''
self.tableWidget.blockSignals(False)  # 退出阻塞模式,重新接受该对象发送的信号
# 退出槽函数

2、断开信号槽方法disconnect

# 进入槽函数:self.xxxxx
self.tableWidget.itemChanged.disconnect(self.xxxxx) # 断开信号槽
'''执行相关槽函数程序'''
self.tableWidget.itemChanged.connect(self.xxxxx)  # 连接信号槽
# 退出槽函数:self.xxxxx

 

posted @ 2022-02-17 16:04  Citrusliu  阅读(2289)  评论(0编辑  收藏  举报