`
izuoyan
  • 浏览: 9224369 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Qt学习之路(40): QTreeWidget

阅读更多
版权声明: 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://devbean.blog.51cto.com/448512/262296
前段时间笔记本坏掉了,一直没有更新博客,现在终于修好了啊,还是来继续《Qt学习之路》这个系列吧!
接着前面的内容,今天要说的是另外一个item view class,QTreeWidget。顾名思义,这个类用来展示树型结构。同前面说的QListWidget类似,这个类需要同另外一个辅助类 QTreeWidgetItem一同使用。不过,既然是提供方面的封装类,即便是看上去很复杂的树,在使用这个类的时候也是显得比较简单的。当不需要使用 复杂的QTreeView的特性的时候,我们可以直接使用QTreeWidget代替。
下面来看代码。
treewidget.h
#ifndef TREEWIDGET_H
#define TREEWIDGET_H

#include <QtGui>

class TreeWidget : public QWidget
{
public :
TreeWidget();

private :
QTreeWidget *tree;
};

#endif // TREEWIDGET_H
treewidget.cpp
#include "treewidget.h"

TreeWidget::TreeWidget()
{
tree = new QTreeWidget(this );
tree->setColumnCount(1);
QTreeWidgetItem *root = new QTreeWidgetItem(tree, QStringList(QString("Root" )));
QTreeWidgetItem *leaf = new QTreeWidgetItem(root, QStringList(QString("Leaf 1" )));
root->addChild(leaf);
QTreeWidgetItem *leaf2 = new QTreeWidgetItem(root, QStringList(QString("Leaf 1" )));
leaf2->setCheckState(0, Qt::Checked);
root->addChild(leaf2);
QList<QTreeWidgetItem *> rootList;
rootList << root;
tree->insertTopLevelItems(0, rootList);
}
首先,我们在构造函数里面创建了一个QTreeWidget的实例。然后我们调用setColumnCount()函数设定栏数。这个函数的效 果我们以后再看。然后我们要向QTreeWidget添加QTreeWidgetItem。QTreeWidgetItem有九个重载的构造函数。我们在 这里只是来看看其中的一个,其余的请自行查阅API文档。这个构造函数的签名如下:
QTreeWidgetItem::QTreeWidgetItem ( QTreeWidget * parent, const QStringList & strings, int type = Type );
这里有3个参数,第一个参数用于指定这个item属于哪一个树;第二个参数是指定这个item显示的文字;第三个参数用于指定这个item的类 型。Type有两个可行的取值:QTreeWidgetItem::Type和QTreeWidgetItem::UserType,由于我们并没有定义 用户类型,所以只使用其默认值即可。这里你会奇怪,第二个参数为什么是一个QStringList类型的,而不是QString类型的?我们先不去管它, 继续下面的代码。
后面我们又创建了一个QTreeWidgetItem,注意它的第一个参数不是QTreeWidget而是QTreeWidgetItem类型 的,这就把它的父节点设置为前面我们定义的root了。然后我们使用了setCheckState()函数,让它变得可以选择,最后使用 addChild()函数把它添加进来。
最后一步,我们创建了一个QList类型,前面的root添加进去,然后insert到top items。这里可以想象到,由于这个树组件可以由多个根组成(严格来说这已经不是树了,不过姑且还是叫树吧),所以我们传进来的是一个list。
好了,编译运行一下我们的代码吧!
样子同我们想象的基本一致,只是这个树的头上怎么会有一个1?还记得我们跳过去的那个函数吗?下面我们修改一下代码看看:
#include "listwidget.h"

TreeWidget::TreeWidget()
{
tree = new QTreeWidget(this );
tree->setColumnCount(2);
QStringList headers;
headers << "Name" << "Number" ;
tree->setHeaderLabels(headers);
QStringList rootTextList;
rootTextList << "Root" << "0" ;
QTreeWidgetItem *root = new QTreeWidgetItem(tree, rootTextList);
QStringList leafTextList;
leafTextList << "Leaf 1" << "1" ;
QTreeWidgetItem *leaf = new QTreeWidgetItem(root, leafTextList);
root->addChild(leaf);
QStringList leaf2TextList;
leaf2TextList << "Leaf 2" << "2" ;
QTreeWidgetItem *leaf2 = new QTreeWidgetItem(root, leaf2TextList);
leaf2->setCheckState(0, Qt::Checked);
root->addChild(leaf2);
QList<QTreeWidgetItem *> rootList;
rootList << root;
tree->insertTopLevelItems(0, rootList);
}
我们把columnCount设为2,然后传入的QStringList对应的有2个元素。这样再来运行一下:
原来这个columnCount就是用于在列表中显示树的!这样,你就可以很容易的将树和列表结合在一起,从而实现类似Windows资源管理器的界面。当然,如果你不需要显示这个header,可以调用setHeaderHidden()函数将这个功能隐藏掉。

本文出自 “豆子空间 ” 博客,请务必保留此出处http://devbean.blog.51cto.com/448512/262296

分享到:
评论

相关推荐

    QT QTreewidget显示和修改xml文件并导出

    QT QTreeWidget是一种用于在GUI应用程序中展示层次结构数据的控件,通常用于显示目录、文件系统或自定义数据结构。在这个项目中,它被用来显示和修改XML文件的内容,并且能够将修改后的数据导出。以下是这个项目涉及...

    Qt4.8.2 QQ抽屉 QTreeWidget

    在压缩包`QtDrawer`中,可能包含了实现上述功能的源代码文件,如`.cpp`和`.h`文件,开发者可以参考这些代码来学习如何在Qt4.8.2中使用QTreeWidget创建类似的抽屉式界面。同时,可能还有示例程序和资源文件,如图标或...

    PyQt(Python+Qt)学习随笔:QTreeWidget中获取指定位置项的itemAt方法

    QTreeWidget的itemAt方法通过视口内的坐标点获取对应坐标位置的项,相关调用方法如下: QTreeWidgetItem itemAt( QPoint p) QTreeWidgetItem itemAt(int x, int y) 通过该方法可以获取到视口上对应坐标所在的项,...

    Qt QTreeWidget 简单易学的例子

    Qt QTreeWidget是Qt库中的一个重要组件,用于在GUI应用程序中展示层次化的数据结构。...通过学习和实践这个简单易学的例子,开发者能够快速掌握如何在Qt应用中使用QTreeWidget,实现丰富的用户界面功能。

    QT的QTreeWidget有checkbox时轻松选中

    在QT编程中,QTreeWidget是一个非常常用的控件,它用于展示层次化的数据,并且可以进行交互操作。在QTreeWidget中添加复选框(checkbox)功能,可以让用户选择或取消选择特定的项,这对于多选操作或者配置界面非常...

    Qt 学习之路:DZY

    ### Qt学习之路:核心知识点概览 #### 一、前言 - **Qt简介**:Qt是一个跨平台的C++图形用户界面应用程序开发框架。它不仅支持Windows、macOS、Linux等主流操作系统,还能用于开发嵌入式系统、移动设备应用(如...

    Qt例程源代码QTreeWidget.7z

    通过学习和理解这些源代码,开发者可以更好地掌握如何在实际项目中灵活运用QTreeWidget,创建出直观且功能丰富的用户界面。无论你是初学者还是经验丰富的Qt开发者,这个例子都能帮助你深入理解QTreeWidget的工作原理...

    qt学习视频3

    QT学习视频3主要聚焦于C++与QT的联合开发,这一部分的学习内容是QT学习旅程中的重要阶段。QT是一个强大的跨平台应用开发框架,由Qt Company维护,广泛应用于桌面、移动以及嵌入式设备的软件开发。C++是QT的主要编程...

    QT树节点拖拽,支持两个QTreewidget相互拖拽

    QT是一个流行的开源C++图形用户界面应用程序开发框架,由 Trolltech(现为 Nokia 的一部分)创建,后来由 The Qt Company 继续维护和发展。...希望下载并分析此代码的同学们能从中学习到更多关于QT编程的知识和技巧。

    其实这本PDF就是Qt学习之路第一版

    ### Qt学习之路知识点总结 #### 一、前言:Qt简介与选择 - **Qt**是一种跨平台的应用程序开发框架,广泛应用于桌面、移动设备及嵌入式系统的GUI应用程序开发。 - C++的GUI编程并非C++标准的一部分,因此开发者在...

    QtreeWidget初步实现(代码实现)

    在本文中,我们将深入探讨如何使用Qt库中的QTreeWidget组件进行初步实现,以及如何创建和操作QTreeWidgetItem对象。QTreeWidget是Qt提供的一种用于显示层次结构数据的控件,常用于展示目录结构、文件系统或者自定义...

    QT学习之路2 (1~82篇)

    42. QListWidget、QTreeWidget 和 QTableWidget 43. QStringListModel 44. QFileSystemModel 45. 模型 46. 视图和委托 47. 视图选择 48. QSortFilterProxyModel 49. 自定义只读模型 50. 自定义可编辑模型 51. 布尔...

    QT 自定义混合控件——基于View/Model/Delegate的QTableView/QTreewidget/Combobox实现

    在本项目"QT自定义混合控件——基于View/Model/Delegate的QTableView/QTreewidget/Combobox实现"中,我们将深入探讨如何利用QT库中的核心组件构建一个强大的数据展示和交互界面。 首先,我们要理解View/Model/...

    PyQt(Python+Qt)学习随笔:QTreeWidgetItem项下的子项列表中增加子项的方法

    QTreeWidgetItem类型的项构建以后,可以通过addChild(QTreeWidgetItem child)方法在该项中的子节点最后加入另一个项child作为该项的子项,也可以通过addChildren(iter[QTreeWidgetItem] children)将一个迭代类型...

    QTreeWidget1.rar

    【标题】"QTreeWidget1.rar" 是一个与Qt库相关的压缩文件,它包含了使用Qt的QTreeWidget组件实现的一个示例项目。QTreeWidget是Qt框架中的一个类,用于在图形用户界面中展示层次化的数据,常用于创建树形结构的控件...

    QTreeWidget基础操作代码

    在CSDN IT1995的相关博文中,你可以找到完整的`TreeWidgetDemo`代码和详细解释,进一步学习和实践`QTreeWidget`的使用。 总之,`QTreeWidget`是Qt中用于构建具有层次结构视图的强大工具,通过灵活的API和丰富的特性...

Global site tag (gtag.js) - Google Analytics