You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从包含复选框的QTableWidget中获取复选框列表并判断选中状态

提取QTableWidget内嵌复选框并检查选中状态的方法

没问题,我来帮你搞定这个需求!你已经通过setCellWidget把复选框嵌入到表格单元格里了,要提取这些复选框到列表、并筛选出选中项对应的路径其实很简单,分两步来实现:

1. 提取所有复选框到列表

你可以写一个专门的方法,遍历表格的每一行,把单元格里的QCheckBox都收集起来:

def get_checkbox_list(self):
    checkbox_list = []
    # 遍历表格的每一行
    for row in range(self.tableWidget.rowCount()):
        # 你的复选框都放在第0列,所以取对应位置的cellWidget
        checkbox = self.tableWidget.cellWidget(row, 0)
        # 确保拿到的是QCheckBox类型的控件
        if isinstance(checkbox, QtWidgets.QCheckBox):
            checkbox_list.append(checkbox)
    return checkbox_list

2. 筛选出选中的路径

因为你填充表格时是按self.path的顺序添加复选框的,所以复选框列表的索引和self.path的索引完全对应。基于这个对应关系,我们可以快速拿到所有选中的路径:

def get_selected_paths(self):
    # 先拿到所有复选框的列表
    checkbox_list = self.get_checkbox_list()
    selected_paths = []
    # 遍历复选框,同时获取对应的索引
    for idx, checkbox in enumerate(checkbox_list):
        if checkbox.isChecked():
            # 根据索引从self.path中取出对应的路径
            selected_paths.append(self.path[idx])
    return selected_paths

调用示例

比如你可以在按钮点击事件里调用这个方法,来获取选中的路径:

def on_get_selected_btn_clicked(self):
    selected_paths = self.get_selected_paths()
    print("当前选中的路径:", selected_paths)

小提醒

看你fill_table方法里设置了self.tableWidget.setColumnCount(1),但后面又写了self.tableWidget.setColumnWidth(1, 200)——表格列索引是从0开始的,这里会导致索引越界,建议把这行多余的列宽设置代码删掉哦~

内容的提问来源于stack exchange,提问作者wimsenOG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 19:42:36