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)

相关推荐

  • 如何理解Spring启动过程

    技术如何理解Spring启动过程这篇文章主要介绍“如何理解Spring启动过程”,在日常操作中,相信很多人在如何理解Spring启动过程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理

    攻略 2021年10月20日
  • python中如何使用Matplotlib库

    技术python中如何使用Matplotlib库这篇文章将为大家详细讲解有关python中如何使用Matplotlib库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Matplotli

    攻略 2021年12月8日
  • 如何解析Linux内核虚拟机的安全扩展KVMSEC

    技术如何解析Linux内核虚拟机的安全扩展KVMSEC如何解析Linux内核虚拟机的安全扩展KVMSEC,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一

    攻略 2021年11月25日
  • 电话查公司,查企业联系方式有哪些方法

    技术电话查公司,查企业联系方式有哪些方法您好,我来为您解答电话查公司。就目前来说,查询企业联系方式,有以下几种办法:1、打114电话查询。
    114可以帮您查询您所需要的企业的联系方式,你只需要把自己想要查询的企业的名称报

    生活 2021年10月26日
  • 如何用python实现简单的文本情感分析

    技术如何用python实现简单的文本情感分析如何用python实现简单的文本情感分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。很久没在公

    攻略 2021年11月15日
  • hbase启动报错master.TableNamespaceManager: Namespace table not found怎么办

    技术hbase启动报错master.TableNamespaceManager: Namespace table not found怎么办小编给大家分享一下hbase启动报错master.TableNamespaceMa

    攻略 2021年12月9日