大家好,又见面了,我是你们的朋友全栈君。
1,简介
本文为一个最简单的QTreeView初始化过程的示例。
除去了一切操作响应等细节,只是展示使QTreeView显示出带层次结构的数据,至少需要哪些代码。
只附带了一点点常用设置项。
2,效果
3,代码
一个QTreeView插入三层数据的最简单代码示例:
代码语言:javascript复制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上,次级节点则是添加到第一个父级节点上,依次构成父子关系树。
5,源码下载
链接:https://pan.baidu.com/s/12S5_vAw_YM7qdT_p3r5WFA 提取码:oeas
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/130964.html原文链接:https://javaforall.cn