设置QStandardItem的CheckBox选项框关闭与开启

10 篇文章 0 订阅
4 篇文章 0 订阅

1.使用背景:
QStandardItem与TreeView结合时,其自带的checkBox功能很好用,可以通过获取其子节点或者根据获取索引遍历根节点下所有的节点,进而控制checkBox的动态显示或隐藏,勾选或取消。

// 根据按钮“全选”->“取消全选”来设定全部选中或者取消
void MsgDataCenterDlg::on_pushButton_AllSelect_clicked() 
{
    int i_RowCount = 0;
    QModelIndex TempIndex;
    i_RowCount = m_pBaliseMsgModel->rowCount();
    for(int i = i_RowCount - 1; i >= 0;i--)
    {
        TempIndex = m_pBaliseMsgModel->index(i, 2);
        if (ui->pushButton_AllSelect->text() == "全选")
        {
            if(Qt::Checked != TempIndex.data(Qt::CheckStateRole))
            {
                m_pBaliseMsgModel->setData(TempIndex, Qt::Checked, Qt::CheckStateRole);
            }
        }
        else
        {
            if(Qt::Unchecked != TempIndex.data(Qt::CheckStateRole))
            {
                m_pBaliseMsgModel->setData(TempIndex, Qt::Unchecked, Qt::CheckStateRole);
            }
        }
    }
}

// item->setData(QVariant(), Qt::CheckStateRole) 传入空值即可控制CheckBox显示与隐藏

// 传入显示状态status来控制QStandardItem的checkBox的显示与隐藏
void PartOrAllVerifyDlg::setCheckStatusVisible(bool status)
{
    QStandardItemModel * model = (QStandardItemModel *)ui->treeView->model();
    int rowCounts = model->rowCount();
    for (int i = 0; i < rowCounts; i++)
    {
        if (model->item(i)->hasChildren())
        {
            int rowC  = model->item(i)->rowCount();
            for (int j = 0; j < rowC; j++)
            {
                model->item(i)->child(j)->setCheckable(status);
                model->item(i)->child(j)->setSelectable(status);
                if (!status)
                {
                    model->item(i)->child(j)->setData(QVariant(), Qt::CheckStateRole);
                }
            }
        }
    }
    ui->treeView->setModel(model);
    ui->treeView->update();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值