Qt学习笔记——QTreeWidget的简单使用

                                           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是指定了这个Itemparent,将这个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();
}

效果如下

 

猜你喜欢

转载自blog.csdn.net/qq_15710245/article/details/82875524