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

QML TableView中实现Delegate内复选框单选功能需求

实现QML TableView复选框单选功能

要让TableView里的复选框只能单选,核心是维护一个全局的选中索引,让所有复选框的选中状态都和这个索引关联:

  • 在TableView中添加一个属性存储当前选中的行索引,初始值设为-1表示无选中项
  • 把CheckBox的checked属性绑定到当前行索引是否等于选中索引
  • 勾选复选框时更新选中索引,取消勾选时(仅当前选中项)重置索引

修改后的完整代码:

TableView {
    id: table 
    anchors.fill: parent 
    // 存储当前选中的行索引,-1表示无选中
    property int selectedIndex: -1

    model: display_model 
    TableViewColumn {
        role: "checkbox"
        delegate: CheckBox {
            id: delegate_checkbox
            // 绑定选中状态:仅当当前行索引等于selectedIndex时勾选
            checked: table.selectedIndex === model.index
            onCheckedChanged: {
                if (checked) {
                    // 勾选时更新选中索引为当前行
                    table.selectedIndex = model.index
                } else {
                    // 取消勾选当前选中项时,重置索引为-1
                    if (table.selectedIndex === model.index) {
                        table.selectedIndex = -1
                    }
                }
            }
        }
    }
}

关键逻辑说明

  • selectedIndex作为全局状态,控制所有复选框的选中状态,确保同一时间只有一个复选框被勾选
  • checked属性的绑定是单向同步,避免多个复选框同时被选中
  • 取消勾选当前选中项时,会清空选中状态,也可以根据需求去掉这部分逻辑,强制必须选中一个项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:37:02