需要 #include <QTreeWidget> #include <QTreeWidgetItem>
#include "win.h" #include <QDebug> #include <QPushButton> Win::Win(QWidget *parent) : QWidget(parent) { this->resize(500,400); QPushButton* btn=new QPushButton("按鈕",this); btn->move(400,350); connect(btn,&QPushButton::clicked,this,&Win::A); tw=new QTreeWidget(this); // 創建一個樹形控件 tw->move(10,10); tw->setColumnCount(2); //設置列數 tw->setHeaderLabels(QStringList()<<"英雄"<<"英雄介紹"); //設置頭部標簽 QTreeWidgetItem* twi=new QTreeWidgetItem(QStringList()<<"力量"); //創建項目 tw->addTopLevelItem(twi); //添加一個頂層項目 QTreeWidgetItem* twi1=new QTreeWidgetItem(QStringList()<<"敏捷"); tw->addTopLevelItem(twi1); QTreeWidgetItem* twi2=new QTreeWidgetItem(QStringList()<<"智力"); tw->insertTopLevelItem(0,twi2); //插入頂層項目 //參數1 索引號 twi2->setCheckState(0,Qt::PartiallyChecked); // 給項目設置復選框 //參數1 復選框的位置 列序號 //Qt::Unchecked 沒選中 //Qt::Checked 選中 //Qt::PartiallyChecked 部分選中 QTreeWidgetItem* li1=new QTreeWidgetItem(QStringList()<<"鋼珠"<<"前排坦克,能吸引傷害"); QTreeWidgetItem* li3=new QTreeWidgetItem(QStringList()<<"鐵柱"<<"后排坦克,能吸引傷害"); twi->addChild(li1) ;//給項目添加子項 twi->addChild(li3); connect(tw,&QTreeWidget::itemClicked,this,&Win::B); //單擊項目觸發的信號 //這個信號會自動傳遞兩個參數:參數1就是被單擊的項目指針;參數2就是單擊的列序號 connect(tw,&QTreeWidget::itemDoubleClicked,this,&Win::C); //雙擊項目觸發的信號 //這個信號會自動傳遞兩個參數:參數1就是被單擊的項目指針;參數2就是單擊的列序號 connect(tw,&QTreeWidget::currentItemChanged,this,&Win::D); //當前項目變化時觸發信號 //這個信號會自動傳遞兩個參數:參數1就是當前項目指針;參數2就是前一項目指針 tw->expandAll();//讓所有的項都是以打開狀態顯示的 //注意必須要在所有項都已經實例化好之后再調用該方法,如果一開始就調用則會沒有效果 } void Win::D(QTreeWidgetItem *current, QTreeWidgetItem *previous){ qDebug()<<"當前項目變化了:"<<current<<previous; } void Win::C(QTreeWidgetItem *item, int column){ qDebug()<<"雙擊了項目:"<<item<<column; } void Win::B(QTreeWidgetItem *item, int column){ qDebug()<<"單擊了項目:"<<item<<column; QTreeWidgetItem* pi=item->parent(); //返回指定項目的父項目指針 //頂層項目的指針是0x0--NULL //int col = pi->indexOfChild(item); //item在父項中的行號(從0開始) //【注意:item不能是頂層項目--否則崩潰】 QTreeWidgetItem* curItem=tw->currentItem(); //獲取當前項目指針 QString str=curItem->text(1); //返回項目指定列的文本--參數項目的列序號 qDebug()<<str; } Win::~Win() { } void Win::A(){ }
實例下載地址:https://share.weiyun.com/5BhTQXr