zoukankan      html  css  js  c++  java
  • QTreeWidget的基本操作

    在主函数中增加:

    init();
        connect(ui->treeWidget,SIGNAL(itemChanged(QTreeWidgetItem*, int)),this,SLOT(treeItemChanged(QTreeWidgetItem*,int)));
    
    函数实现:
    void Widget::init()
    {
        ui->treeWidget->setHeaderLabels(QStringList()<<"123"<<"234");//设置列名
        ui->treeWidget->clear();
    
        QTreeWidgetItem* group1=new QTreeWidgetItem(ui->treeWidget);
        group1->setText(0,"group1");
        group1->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
        group1->setCheckState(0,Qt::Unchecked);
    
        QTreeWidgetItem* subItem11=new QTreeWidgetItem(group1);
        subItem11->setText(0,"subItem11");
        subItem11->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
        subItem11->setCheckState(0,Qt::Unchecked);
    
        QTreeWidgetItem* subItem12=new QTreeWidgetItem(group1);
        subItem12->setText(0,"subItem12");
        subItem12->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
        subItem12->setCheckState(0,Qt::Unchecked);
    
        QTreeWidgetItem* subItem13=new QTreeWidgetItem(group1);
        subItem13->setText(0,"subItem13");
        subItem13->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
        subItem13->setCheckState(0,Qt::Unchecked);
    
    
        QTreeWidgetItem* subItem14=new QTreeWidgetItem(group1);
        subItem14->setText(0,"subItem14");
        subItem14->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
        subItem14->setCheckState(0,Qt::Unchecked);
    
        QTreeWidgetItem* group2=new QTreeWidgetItem(ui->treeWidget);
        group2->setText(0,"group2");
        group2->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
        group2->setCheckState(0,Qt::Unchecked);
    
        QTreeWidgetItem* subItem21=new QTreeWidgetItem(group2);
        subItem21->setText(0,"subItem21");
        subItem21->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
        subItem21->setCheckState(0,Qt::Unchecked);
    
        QTreeWidgetItem* subItem22=new QTreeWidgetItem(group2);
        subItem22->setText(0,"subItem22");
        subItem22->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
        subItem22->setCheckState(0,Qt::Unchecked);
    
        QTreeWidgetItem* subItem23=new QTreeWidgetItem(group2);
        subItem23->setText(0,"subItem23");
        subItem23->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
        subItem23->setCheckState(0,Qt::Unchecked);
    
    
        QTreeWidgetItem* subItem24=new QTreeWidgetItem(group2);
        subItem24->setText(0,"subItem24");
        subItem24->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
        subItem24->setCheckState(0,Qt::Unchecked);
    
    }
    
    void Widget::updateParentItem(QTreeWidgetItem *item)
    {
        QTreeWidgetItem* parent=item->parent();
        if(parent==NULL)
        {
            return;
        }
        int selectedCount=0;
        int childCount=parent->childCount();
        for(int i=0;i<childCount;i++)
        {
            QTreeWidgetItem* childItem=parent->child(i);
            if(childItem->checkState(0)==Qt::Checked)
            {
                selectedCount++;
    
            }
        }
        if(selectedCount<=0)
        {
            parent->setCheckState(0,Qt::Unchecked);
        }
        else if(selectedCount>0&&selectedCount<childCount)
        {
            parent->setCheckState(0,Qt::PartiallyChecked);
        }
        else if(selectedCount==childCount)
        {
            parent->setCheckState(0,Qt::Checked);
        }
    }
    
    void Widget::treeItemChanged(QTreeWidgetItem *item, int column)
    {
        //QString itemText=item->text(0);
        if(Qt::Checked==item->checkState(0))
        {
            //QTreeWidgetItem* parent=item->parent();
            int count=item->childCount();
            if(count>0)
            {
                for(int i=0;i<count;i++)
                {
                    item->child(i)->setCheckState(0,Qt::Checked);
                }
            }
            else
            {
                updateParentItem(item);
            }
    
        }
        else if(Qt::Unchecked==item->checkState(0))
        {
            int count=item->childCount();
            if(count>0)
            {
                for(int i=0;i<count;i++)
                {
                    item->child(i)->setCheckState(0,Qt::Unchecked);
                }
            }
            else
            {
                updateParentItem(item);
            }
        }
    }

      

    
    
  • 相关阅读:
    我的收藏
    VS2019错误:CS8370 的处理方法
    Win7设置远程访问(免密码)---- Cuba
    【收藏】关于AsposeDLL的使用
    VS Code 离线安装插件(中文包)
    WinCE在启动界面无法进入系统
    WinCE 清除远程连接缓存
    MySQL 创建远程访问用户
    MySQL 命令行(常用)操作数据库
    C# 制作关键字醒目显示控件
  • 原文地址:https://www.cnblogs.com/wiessharling/p/2845689.html
Copyright © 2011-2022 走看看