1,简介
本文为一个最简单的QTreeView初始化过程的示例。
除去了一切操作响应等细节,只是展示使QTreeView显示出带层次结构的数据,至少需要哪些代码。
只附带了一点点常用设置项。
2,效果
3,代码
一个QTreeView插入三层数据的最简单代码示例:
void MainWindow::InitTree() { //1,构造Model,这里示例具有3层关系的model构造过程 QStandardItemModel* model = new QStandardItemModel(ui->treeView); model->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("序号") << QStringLiteral("名称")); //设置列头 for(int i=0;i<5;i++) { //一级节点,加入mModel QList<QStandardItem*> items1; QStandardItem* item1 = new QStandardItem(QString::number(i)); QStandardItem* item2 = new QStandardItem(QStringLiteral("一级节点")); items1.append(item1); items1.append(item2); model->appendRow(items1); for(int j=0;j<5;j++) { //二级节点,加入第1个一级节点 QList<QStandardItem*> items2; QStandardItem* item3 = new QStandardItem(QString::number(j)); QStandardItem* item4 = new QStandardItem(QStringLiteral("二级节点")); items2.append(item3); items2.append(item4); item1->appendRow(items2); for(int k=0;k<5;k++) { //三级节点,加入第1个二级节点 QList<QStandardItem*> items3; QStandardItem* item5 = new QStandardItem(QString::number(k)); QStandardItem* item6 = new QStandardItem(QStringLiteral("三级节点")); items3.append(item5); items3.append(item6); item3->appendRow(items3); } } } //2,给QTreeView应用model ui->treeView->setModel(model); }
4,说明
可以看到,要使一个QTreeView能够显示数据,需要构造一个model并设置给QTreeView。
Qt提供了一些类型的Model,其中最常用的就是这个QStandardItemModel类,一般可以满足大部分需求。
另外,表头的内容也由这个model管理,setHorizontalHeaderLabels 函数可以设置共有多少列、每列文字。
一级节点直接使用 appendRow 方法添加到model上,次级节点则是添加到第一个父级节点上,依次构成父子关系树。