Qt5中使用QTreeWidget实现树层次的勾选

1 篇文章 0 订阅

QTreeWidget类有一个信号itemClicked( QTreeWidgetItem* item,int column ):当树中某个item被点击时,会发出该信号,其中item是被点击的item,而column是该item的列序号。

树中各级对象的勾选状态可以有三种:

Qt::Checket

Qt::UnChecked

Qt::PartiallyChecked

那么接收信号的函数就可以这么来实现:比如,column 0 为勾选的列序号。

void UiTestMain::onTreeItemCheckChange( QTreeWidgetItem* item,int column ){
    if( column!=0 )
        return;

    // 设置子对象的勾选状态
    for( int i=0;i<item->childCount();++i )
        item->child(i)->setCheckState(0,item->checkState(0));

    // 更新父对象的勾选状态
    QTreeWidgetItem* p = item->parent();
    if( p!=0 ){
        p->setCheckState(0,item->checkState(0));
        for( int i=0;i<p->childCount();++i )
            if( p->child(i)->checkState(0)!=item->checkState(0) ){
                p->setCheckState(0,Qt::PartiallyChecked);
                return;
            }
    }
}
测试如下:

初始化时都选中

点击“LED灯具测试”前的复选框,该项目变成未选中,同时“DSP板内测试”相变成部分选中


然后继续点击“SRAM测试”前的复选框,该项目变成未选中,“DSP板内测试”状态不变

依次将“SPI Flash测试”,“拨码开关测试”取消选中,”DSP板内测试“的选择状态都不变,取消”看门狗测试”的选中,“DSP板内测试”变成未选中


大概就是这么个过程吧。

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值