一、基本的操作:添加、删除、一些常用信号:
#include "TreeWidget.h"
#include <QTreeWidget>
TreeWidget::TreeWidget(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
//设置列数和每一列的宽度
ui.treeWidget->setColumnCount(4);
ui.treeWidget->setColumnWidth(0,50);
ui.treeWidget->setColumnWidth(1,100);
ui.treeWidget->setColumnWidth(2,150);
ui.treeWidget->setColumnWidth(3,200);
//设置列的标题
QStringList labelList;
labelList.append("zhang");
labelList.append("li");
labelList.append("wang");
labelList.append("zhao");
ui.treeWidget->setHeaderLabels(labelList);
//隐藏表头
//ui.treeWidget->setHeaderHidden(true);
QIcon icon_folder(":/TableAndTreeWidget/Resources/Save.png");
QIcon icon_file(":/TableAndTreeWidget/Resources/grab.png");
// 插入数据
AddItem("aaa.txt", "2015-06-26 07:59:00", "text file", 1242, icon_file);
AddItem("bbb.mp4", "2015-06-25 14:51:00", "video file", 98990098, icon_file);
AddItem("ccc.doc", "2015-06-25 07:34:00", "office word file", 7667866, icon_file);
QTreeWidgetItem* item = AddItem("pictures", "2015-06-25 23:23:00", "folder", 0, icon_folder);
AddItem("101.txt", "2015-06-26 05:12:00", "text file", 332, icon_file, item);
//节点全部展开
ui.treeWidget->expandAll();
connect(ui.treeWidget,SIGNAL(itemClicked (QTreeWidgetItem *,int)),this,SLOT(OnTreeWidgetClicked(QTreeWidgetItem *,int)));
connect(ui.treeWidget,SIGNAL(itemPressed (QTreeWidgetItem *,int)),this,SLOT(OnTreeWidgetPressed(QTreeWidgetItem *,int)));
connect(ui.treeWidget,SIGNAL(itemChanged (QTreeWidgetItem *,int)),this,SLOT(OnTreeWidgetItemChanged(QTreeWidgetItem *,int)));
}
TreeWidget::~TreeWidget()
{
}
//自己封装的一个类,用来向树窗体中添加节点
QTreeWidgetItem* TreeWidget::AddItem(const QString& filename,
const QString& last_modified,
const QString& type,
int size,QIcon icon,
QTreeWidgetItem* parent)
{
QTreeWidgetItem* item = new QTreeWidgetItem();
//为节点添加CheckBox
item->setCheckState(0,Qt::Unchecked);
item->setText(0, filename);
item->setIcon(0, icon);
item->setText(1, last_modified);
item->setText(2, type);
item->setText(3, QString::number(size));
//设置附加数据
item->setData(3, Qt::UserRole, size);
//设置前景颜色
for (int i = 0;i <= 3;i++)
item->setForeground(i,QBrush(QColor(Qt::blue)));
if(parent)
{
// 在当前节点下添加子节点
parent->addChild(item);
}
else
{
// 添加顶级节点顶级节点
ui.treeWidget->addTopLevelItem(item);
}
return item;
}
//press:鼠标按下响应
void TreeWidget::OnTreeWidgetPressed(QTreeWidgetItem * item, int column)
{
}
//CheckBox的状态发生变化时,会触发此槽函数
void TreeWidget::OnTreeWidgetItemChanged(QTreeWidgetItem * item, int column)
{
}
//click:鼠标按下再抬起响应
void TreeWidget::OnTreeWidgetClicked(QTreeWidgetItem * item, int column)
{
if(item->childCount() > 0)
{
for(int i = 0; i < item->childCount(); i ++)
{
del(item->child(i),column);
}
}
delete item;
}
//删除TreeWidget中的一个节点
void TreeWidget::del(QTreeWidgetItem* node,int nColumn)
{
if(node->childCount() > 0)
{
for(int i = 0; i < node->childCount(); i ++)
{
del(node->child(i),nColumn);
}
}
else
{
delete node;
}
}#include "TreeWidget.h"