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    

 

 

 

posted @ 2019-09-10 10:34  天子骄龙  阅读(2396)  评论(0编辑  收藏  举报