qt5--樹形控件QTreeWidget


 需要       #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    

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM