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)

相关推荐

  • optisystem光谱图的x轴怎么缩短(gaussview预测光谱)

    技术eeglab如何绘制通道光谱图小编给大家分享一下eeglab如何绘制通道光谱图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!绘制通道光谱图

    攻略 2021年12月22日
  • JavaScript如何改变元素属性

    技术JavaScript如何改变元素属性小编给大家分享一下JavaScript如何改变元素属性,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

    攻略 2021年11月8日
  • 一次基于windowsxp--SLmail服务的缓冲区溢出实践

    技术一次基于windowsxp--SLmail服务的缓冲区溢出实践 一次基于windows_xp--SLmail服务的缓冲区溢出实践一次基于windows_xp--SLmail服务的缓冲区溢出实践
    20

    礼包 2021年11月1日
  • qt地图综合拉伸方法(qt实现占据栅格地图)

    技术如何实现Qt地图自适应拉伸小编给大家分享一下如何实现Qt地图自适应拉伸,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、前言用过echart的人都会遇到一个问题,就算是代码中写了window.onr

    攻略 2021年12月20日
  • python光学仿真如何实现光线追迹折射与反射

    技术python光学仿真如何实现光线追迹折射与反射本篇文章给大家分享的是有关python光学仿真如何实现光线追迹折射与反射,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一

    攻略 2021年10月20日
  • 如何解析element-ui中upload组件传递文件及其他参数的问题

    技术如何解析element-ui中upload组件传递文件及其他参数的问题如何解析element-ui中upload组件传递文件及其他参数的问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解

    攻略 2021年11月9日