一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - C/C++ - Qt中樹(shù)形控件Tree Widget的使用方法匯總

Qt中樹(shù)形控件Tree Widget的使用方法匯總

2022-03-06 19:55BOO2018 C/C++

最近小編在研究Tree Widget樹(shù)形控件的相關(guān)知識(shí),這種控件其實(shí)有時(shí)還是很有用處的,我主要利用的是帶有復(fù)選框的樹(shù)形控件,下面通過(guò)實(shí)例代碼給大家介紹下Qt中樹(shù)形控件Tree Widget的一些使用方法,感興趣的朋友一起學(xué)習(xí)吧

最近需要用到Tree Widget樹(shù)形控件,現(xiàn)將自己的一些理解記錄下來(lái)。

Tree Widget在項(xiàng)目控件組(Item Widgets)里面可以找到。這種控件其實(shí)有時(shí)還是很有用處的,我主要利用的是帶有復(fù)選框的樹(shù)形控件。結(jié)果如圖所示;

Qt中樹(shù)形控件Tree Widget的使用方法匯總

當(dāng)選中頂層的樹(shù)形節(jié)點(diǎn)時(shí),子節(jié)點(diǎn)全部被選中;當(dāng)取消選擇頂層樹(shù)形節(jié)點(diǎn)時(shí),子節(jié)點(diǎn)的選中狀態(tài)將全部被取消,二當(dāng)選中子節(jié)點(diǎn)是,父節(jié)點(diǎn)顯示部分選中的狀態(tài)。

幾個(gè)主要的函數(shù):

setCheckState設(shè)置復(fù)選框;

ItemIsUserCheckable 項(xiàng)目上是否有復(fù)選框

ItemIsEnabled 項(xiàng)目上是否沒(méi)有被禁用(Enabled可用/Disabled禁用)

ItemIsSelectable 項(xiàng)目是否可以選中

代碼:

在mainwindow.h中插入一下代碼:

  void init();
  void updateParentItem(QTreeWidgetItem *item);

public slots:
  void treeItemChanged(QTreeWidgetItem* item,int column);

在mainwindow構(gòu)造函數(shù)中添加:

init();
connect(ui->treeWidget,SIGNAL(itemChanged(QTreeWidgetItem*,int)),this,SLOT(treeItemChanged(QTreeWidgetItem*,int)));

init函數(shù)的實(shí)現(xiàn);

   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->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
   subItem11->setText(0,"subItem11");
   subItem11->setCheckState(0,Qt::Unchecked);

   QTreeWidgetItem* subItem12=new QTreeWidgetItem(group1);
   subItem12->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
   subItem12->setText(0,"subItem12");
   subItem12->setCheckState(0,Qt::Unchecked);

   QTreeWidgetItem* subItem13=new QTreeWidgetItem(group1);
   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函數(shù)的實(shí)現(xiàn);

   QString itemText=item->text(0);
   //選中
   if(Qt::Checked ==item->checkState(0))//全選check打勾
   {
       QTreeWidgetItem* parent=item->parent();//定義一個(gè)節(jié)點(diǎn)
       int count=item->childCount();//子節(jié)點(diǎn)的數(shù)目
       if(count>0)
       {
           for(int i=0;i<count;i++)
           {
               //子節(jié)點(diǎn)也選中
               item->child(i)->setCheckState(0,Qt::Checked);
           }
       }
       else
       {
           //是子節(jié)點(diǎn)
           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 函數(shù)的實(shí)現(xiàn);

    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)
    {
        //部分選中狀態(tài)
        parent->setCheckState(0,Qt::PartiallyChecked);
    }
    else if(selectedCount==childCount)
    {
        parent->setCheckState(0,Qt::Checked);
    }

最終實(shí)現(xiàn)的就是第一張圖的效果。

到此這篇關(guān)于Qt中樹(shù)形控件Tree Widget的一些使用方法的文章就介紹到這了,更多相關(guān)Qt樹(shù)形控件Tree Widget使用內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/qq_42570058/article/details/83316880

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 女教师波多野结衣高清在线 | 暖暖在线日本 | 四虎影视地址 | 午夜家庭影院 | 亚洲天堂h | 日本公与妇中文在线 | 性夜影院午夜看片 | 日韩欧美一区二区在线 | 大象传媒免费网址 | 91精品国产91久久久久 | 好爽好紧小雪别夹小说 | 久久偷拍国2017的 | 精品淑女少妇AV久久免费 | 不良网站在线观看 | 十大看黄网站 | 精品国产影院 | 97久久精品午夜一区二区 | 国产精品视频第一区二区 | 欧亚精品一区二区三区 | 日韩一品在线播放视频一品免费 | 国产日韩欧美在线播放 | 国产一精品一av一免费爽爽 | 亚洲精品久久碰 | 加勒比一本大道香蕉在线视频 | 九九热在线免费观看 | 国产成人精品曰本亚洲78 | 国产一卡二卡3卡4卡更新 | 欧美精品色精品一区二区三区 | 色综七七久久成人影 | 国产精品久久久久一区二区三区 | 亚洲波多野结衣日韩在线 | 韩国女主播一区二区视频 | 脱女学小内内摸出水网站免费 | 好吊日在线| 四虎comwww最新地址 | 欧洲男同直粗无套播放视频 | 国产精品第 | 1024人成网站色 | 桥本有菜在线四虎福利网 | 四虎影院在线免费播放 | 九九热在线视频 |