如何在QTableWidget中仅获取存在值的行/列数量
PyQt5 QTableWidget 获取非空行列数方法
QTableWidget 没有内置的直接获取非空列/行数量的接口,你可以通过遍历单元格自行判断实现,以下是可直接使用的代码:
获取非空列数量
遍历所有列,判断每列是否存在至少一个非空单元格:
def get_non_empty_column_count(table): total_col = table.columnCount() total_row = table.rowCount() valid_col_count = 0 for col in range(total_col): has_value = False for row in range(total_row): cell_item = table.item(row, col) # 排除单元格为空、单元格内容为空白的情况 if cell_item and cell_item.text().strip(): has_value = True break if has_value: valid_col_count += 1 return valid_col_count # 调用示例 non_empty_cols = get_non_empty_column_count(self.tableWidget)
你当前20列仅前2列有数据的场景下,调用后返回值就是2,符合你的需求。
获取非空行数量
逻辑和获取非空列一致,优先遍历行判断即可:
def get_non_empty_row_count(table): total_col = table.columnCount() total_row = table.rowCount() valid_row_count = 0 for row in range(total_row): has_value = False for col in range(total_col): cell_item = table.item(row, col) if cell_item and cell_item.text().strip(): has_value = True break if has_value: valid_row_count += 1 return valid_row_count # 调用示例 non_empty_rows = get_non_empty_row_count(self.tableWidget)
可选优化
如果你的表格数据量较大、需要频繁获取非空行列数,可以额外维护两个计数变量,在每次新增/修改/删除单元格内容时同步更新计数,不需要每次全量遍历表格,性能更高。
注意:如果你是通过setCellWidget()往单元格里插入控件存储内容,需要把上面判断逻辑里的item.text()替换为对应控件的取值逻辑即可。
内容的提问来源于stack exchange,提问作者E. Artemis
相关产品推荐
相关产品推荐

