一.什么是树形组件
树形组件,我们可以想象一下我们的文件或者qt左侧的项目。
对对对,就类似于这样!
还是老样子,我们跟着项目来
上图:
来吧,开干!
二.界面设计树形组件
可以双击直接添加树形内容:
还可以添加子目录
三.代码实现
1.清空
先将刚刚我们界面添加的清除干净。
ui->treeWidget->clear();
2.设置列数
设置目录有几列
ui->treeWidget->setColumnCount(2);
3.设置头标签
ui->treeWidget->setHeaderLabels(QStringList("科目","描述"));
运行结果:
4.添加根目录
①QTreeWidgetitem
注意初始化就是treeWidget
QTreeWidgetItem * root1=new QTreeWidgetItem(ui->treeWidget);
②设置文本
root1->setText(0,"c语言"); root1->setText(1,"开发基础");
运行结果:
③设置图标
需要素材的可以dd我
QIcon icon; icon.addFile(":/image/file.png"); root1->setIcon(0,icon);
运行结果:
④添加为顶层目录
添加为顶层目录,也就是添加成根目录
ui->treeWidget->addTopLevelItem(root1);
5.添加子目录
①初始化为父目录
这里的root1就是我们刚刚添加的根目录
QTreeWidgetItem* item=new QTreeWidgetItem(root1);
②子目录添加到父目录
QStringList list={"指针","程序控制","数据结构","结构体","文件操作"}; for(int i=0;i<list.count();i++) { QTreeWidgetItem* item=new QTreeWidgetItem(root1); item->setText(0,list[i]); item->setText(1,"熟练掌握"); root1->addChild(item); }
现在的运行结果:
③获取到子目录
要是我们还想要在文件操作的目录下再添加目录可以先获取到文件操作的目录项,再下一层初始化为它。
auto child=root1->child(4); QStringList list2={"读文件","写文件","查找文件","删除文件"}; for(int i=0;i<list2.count();i++) { QTreeWidgetItem*item=new QTreeWidgetItem(child); item->setText(0,list2[i]); item->setText(1,"必须掌握"); root1->addChild(child); }
运行结果:
我们还可以再添加一个c++的根目录
QTreeWidgetItem * root2=new QTreeWidgetItem(ui->treeWidget); root2->setText(0,"c++"); root2->setText(1,"开发高级"); icon.addFile(":/image/file.png"); root2->setIcon(0,icon); ui->treeWidget->addTopLevelItem(root2); QStringList list3={"类和对象","继承和派生","运算符重载","虚函数","模板"}; for(int i=0;i<list3.count();i++) { QTreeWidgetItem* item=new QTreeWidgetItem(root2); item->setText(0,list3[i]); item->setText(1,"熟练掌握"); root2->addChild(item); }
运行结果:
【qt】QTreeWidget 树形组件2:https://developer.aliyun.com/article/1523053