阅读背景:

QT学习---TreeWidget的基本操作

来源:互联网 

一、基本的操作:添加、删除、一些常用信号:

#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"



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: