需要 #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(){
}
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓