Qt中树形控件Tree Widget的使用方法有哪些

技术Qt中树形控件Tree Widget的使用方法有哪些本篇内容主要讲解“Qt中树形控件Tree Widget的使用方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Q

本篇内容主要讲解“Qt中树形控件TreeWidget的使用方法有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Qt中树形控件TreeWidget的使用方法有哪些"吧!

树形小部件在项目控件组(项目部件)里面可以找到。这种控件其实有时还是很有用处的,我主要利用的是带有复选框的树形控件。结果如图所示;

Qt中树形控件TreeWidget的使用方法有哪些

当选中顶层的树形节点时,子节点全部被选中;当取消选择顶层树形节点时,子节点的选中状态将全部被取消,二当选中子节点是,父节点显示部分选中的状态。

几个主要的函数:

setCheckState设置复选框;

ItemIsUserCheckable项目上是否有复选框

ItemIsEnabled项目上是否没有被禁用(已启用可用/禁用禁用)

ItemIsSelectable项目是否可以选中

代码:

在主窗口。h中插入一下代码:

void init();

voidupdateParentItem(QTreeWidgetItem * item);

公共槽3360

voitreeitemchanged(QTreeWidgetItem * item,int列);在主窗口构造函数中添加:

init();

connect(ui-treeWidget,SIGNAL(项目已更改(QTreeWidgetItem *,int))、this,SLOT(树项目已更改(QTreeWidgetItem *,int)));初始化函数的实现;

QTreeWidgetItem *组1=新的QTreeWidgetItem(ui-tree小部件);

group1-setText(0,“group 1”);

组1-设置标志(Qt : itemissercheckable | Qt : itemisenabled | Qt :3360 itemisselectable);

组1-设置检查状态(0,Qt:Unchecked未选中未选中);

QTreeWidgetItem *主题11=新的QTreeWidgetItem(第1组);

子项目11-设置标志(Qt : itemiscercheckable | Qt :3360 itemisenabled | Qt :3360 itemisselectable);

子项11-设置文本(0,'子项11 ');

子项11-设置检查状态(0,Qt:Unchecked未选中未选中);

QTreeWidgetItem *主题12=新的QTreeWidgetItem(第1组);

子项目12-设置标志(Qt : itemiscercheckable | Qt :3360 itemisenabled | Qt :3360 itemisselectable);

子项12-设置文本(0,'子项12 ');

子项12-设置检查状态(0,Qt:Unchecked未选中未选中);

QTreeWidgetItem *主题13=新的QTreeWidgetItem(第1组);

   subItem13->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
     subItem13->setText(0,"subItem11");
     subItem13->setCheckState(0,Qt::Unchecked);
 
     QTreeWidgetItem* subItem14=new QTreeWidgetItem(group1);
     subItem14->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
     subItem14->setText(0,"subItem12");
     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* subItem1=new QTreeWidgetItem(group2);
     subItem1->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
     subItem1->setText(0,"subItem11");
     subItem1->setCheckState(0,Qt::Unchecked);
 
     QTreeWidgetItem* subItem2=new QTreeWidgetItem(group2);
     subItem2->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
     subItem2->setText(0,"subItem12");
     subItem2->setCheckState(0,Qt::Unchecked);
 
     QTreeWidgetItem* subItem3=new QTreeWidgetItem(group2);
     subItem3->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
     subItem3->setText(0,"subItem11");
     subItem3->setCheckState(0,Qt::Unchecked);
 
     QTreeWidgetItem* subItem4=new QTreeWidgetItem(group2);
     subItem4->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
     subItem4->setText(0,"subItem12");
     subItem4->setCheckState(0,Qt::Unchecked);
      QTreeWidgetItem* group3=new QTreeWidgetItem(ui->treeWidget);
      group3->setText(0,"group3");
      group3->setFlags(Qt::ItemIsAutoTristate|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
      group3->setCheckState(0,Qt::Unchecked);
 
      QTreeWidgetItem* subItem111=new QTreeWidgetItem(group3);
      subItem111->setFlags(Qt::ItemIsAutoTristate|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
      subItem111->setText(0,"subItem111");
      subItem111->setCheckState(0,Qt::Unchecked);
 
      QTreeWidgetItem* subItem112=new QTreeWidgetItem(group3);
      subItem112->setFlags(Qt::ItemIsAutoTristate|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
      subItem112->setText(0,"subItem112");
      subItem112->setCheckState(0,Qt::Unchecked);

treeItemChanged函数的实现;

 QString itemText=item->text(0);
     //选中
     if(Qt::Checked ==item->checkState(0))//全选check打勾
     {
         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);
         }
     }

updateParentItem 函数的实现;

  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);
      }

到此,相信大家对“Qt中树形控件Tree Widget的使用方法有哪些”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/126936.html

(0)

相关推荐

  • 如何修改cocosbuilder文件数目的限制

    技术如何修改cocosbuilder文件数目的限制这篇文章将为大家详细讲解有关如何修改cocosbuilder文件数目的限制,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。下载 coco

    攻略 2021年11月19日
  • 什么是Capsulecorp-Pentest

    技术什么是Capsulecorp-Pentest本篇内容主要讲解“什么是Capsulecorp-Pentest”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是Capsul

    攻略 2021年10月29日
  • ssh-keygen参数(公钥默认写入ssh目录下的什么文件)

    技术ssh-keygen的公钥格式是什么样的这篇文章给大家介绍ssh-keygen的公钥格式是什么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。ssh-keygen 公钥格式公钥:公钥有2种格式

    攻略 2021年12月24日
  • OsgEarth开发笔记,四):Qt5.15.2在QtCreator集成Osg3.6.3+OsgEarth3.1+OsgQt的vs2019x64版本开发环境搭建

    技术OsgEarth开发笔记,四):Qt5.15.2在QtCreator集成Osg3.6.3+OsgEarth3.1+OsgQt的vs2019x64版本开发环境搭建 OsgEarth开发笔记(四):Qt

    礼包 2021年12月24日
  • BASE64处理文件

    技术BASE64处理文件 BASE64处理文件Base64:
    Base64是一种编码方式,基于64个ASCII字符来表示二进制数据,Base64将8个bit为一个单位的字节数据拆分为以6个bit为一个单

    礼包 2021年12月24日
  • mysql修改时区的方法是什么

    技术mysql修改时区的方法是什么本篇内容介绍了“mysql修改时区的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有

    2021年12月2日