QTreeWidget
QTreeWidget是一个树形视图控件,当不需要进行较为复杂的操作时,
QTreeWidget会比QTreeView更方便使用,这是一个继承了QTreeView的封装类,
需要跟QTreeWidgetItem一起使用
所需头文件:
QTreeWidget
QTreeWidgetItem
常用函数(大概吧):
QTreeWidget:
treeWidget->setColumnCount(int columns);设置树状列表的列数,也就是顶部分类的个数
setHeaderLabel(const QString & headerName);设置树状列表的首个头部文字信息
setHeaderLabel(const QStringList & headerNames);设置树状列表的多个头部文字信息
setHeaderHidden(bool flag);设置是否显示树状列表的头部文字信息
treeWidget->insertTopLevelItems(int index, QList<QTreeWidgetItem *> & rootList);将rootList插入到树状列表的index的位置,改变各棵树的顺序,rootList中有多少个项,就会插入多少棵树
treeWidget->takeTopLevelItem(treeWidget->indexOfTopLevelItem(item)); 这是删除根item的方法
QTreeWidgetItem:
构造函数:QTreeWidgetItem(treeWidget, QStringList(QString("根")));treeWidget是指定了这个Item的parent,将这个item的内容显示在parnet中,QStringList对象是这个item的值,之所以是List对象,是因为如果这个树状视图的列数是大于一列的话,可以再后面的列数显示这个item的更多信息(List中 index>0 的那些信息)
构造函数可不指定parnet,可使用treeWidget->insertTopLevelItems函数再对树状视图进行插入根对象或
treeWidgetItem->addChild(QTreeWidgetItem *) treeWidgetItem->addChildren(QList<QTreeWidgetItem *> &)进行插入
构造函数的parnet可填入一个Item,将该对象作为当前对象的父项,前对象将属于item下的控件
treeWidgetItem->setCheckState(0,Qt::Checked); 为第一列的数据信息设置复选框,可设置多列数据的复选状态
treeWidgetitem->setText(0,"First Item");0指第一列,"First Item"指此控件的显示文本
treeWidgetItem->removeChild(QTreeWidgetItem *item); 这是删除作为子项的item的函数
创建一个TreeWidget:
void createTreeWidget()
{
QWidget *widget = new QWidget();
QTreeWidget * treeWidget = new QTreeWidget();
treeWidget->setColumnCount(2);
QStringList strList;
strList.append("name");
strList.append("Date");
//设置栏数,就是显示的内容只有一列
//可用setHeaderHidden()函数隐藏表头文字
QTreeWidgetItem * root = new QTreeWidgetItem(treeWidget, QStringList(QString("根")));
//此处的StringList跟上面的栏数是有关的,1栏就显示一个根,2栏的话会显示下一个list 的内容
new QTreeWidgetItem(root, strList);
QTreeWidgetItem * node = new QTreeWidgetItem(root, QStringList(QString("根的次节点2")));
QTreeWidgetItem * root2 = new QTreeWidgetItem(treeWidget, QStringList(QString("根2")));
QTreeWidgetItem * node2 = new QTreeWidgetItem(root2, QStringList(QString("根2的次节点2")));
QTreeWidgetItem * dataNode = new QTreeWidgetItem(root2, strList);
node->setCheckState(0,Qt::Checked);//设置node节点为选中状态
//可使用该函数为节点添加勾选框
dataNode->setCheckState(1, Qt::Checked);
QTreeWidgetItem * rootTop = new QTreeWidgetItem(QStringList(QString("根Top")));
QList<QTreeWidgetItem *> rootList;
rootList << rootTop;//可写入多个根节点,以显示多棵树
treeWidget->insertTopLevelItems(0, rootList);
//rootList列表中有多少个根节点就显示多少棵树, 会将树显示在index的位置
//根的顺序的修改
QHBoxLayout *layout = new QHBoxLayout(widget);
layout->addWidget(treeWidget);
widget->setLayout(layout);
widget->setAttribute(Qt::WA_DeleteOnClose);
widget->setWindowTitle("Tree Widget");
widget->show();
}
效果如下