C/C++ Qt TreeWidget单层树形组件怎么应用
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"C/C++ Qt TreeWidget单层树形组件怎么应用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C/C++ Qt TreeWid
千家信息网最后更新 2026年11月02日C/C++ Qt TreeWidget单层树形组件怎么应用
本篇内容主要讲解"C/C++ Qt TreeWidget单层树形组件怎么应用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C/C++ Qt TreeWidget单层树形组件怎么应用"吧!
TreeWidget 目录树组件,该组件适用于创建和管理目录树结构,在开发中我们经常会把它当作一个升级版的ListView组件使用,因为ListView每次只能显示一列数据集,而使用TableWidget组件显示多列显得不够美观,此时使用Tree组件显示单层结构是最理想的方式,本章将通过TreeWidget实现多字段显示,并增加一个自定义菜单,通过在指定记录上右键可弹出该菜单并对指定记录进行操作。
1.通过TreeView组件实现一个只读属性的树形目录,该目录中指定三个字段,分别用来表示ID,IP地址,用户名字段.
初始化Tree组件
1.初始化并设置treeView属性
2.设置列头长度
3.设置列头数据
4.设置表中元素
#include#include #include #include // By: LyShark// https://www.cnblogs.com/lysharkMainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),ui(new Ui::MainWindow){ ui->setupUi(this); QStandardItemModel *tree = new QStandardItemModel(0,3,this); // 设置treeView属性 ui->treeView->setColumnWidth(0,300); // 设置最后一列宽度自适应 ui->treeView->setIndentation(1); // 设置表头缩进为1 ui->treeView->setEditTriggers(QAbstractItemView::NoEditTriggers); // 节点不可编辑 // 设置列头长度 ui->treeView->setColumnWidth(0,50); // 设置第1列长度 ui->treeView->setColumnWidth(1,200); // 设置第2列长度 ui->treeView->setColumnWidth(2,200); // 设置第3列长度 // 设置列头数据 tree->setHeaderData(0, Qt::Horizontal, tr("ID")); tree->setHeaderData(1, Qt::Horizontal, tr("IP地址")); tree->setHeaderData(2, Qt::Horizontal, tr("用户")); ui->treeView->setModel(tree); // 将表头设置到模型 // 设置表中元素 QList ptr; QStandardItem *item_uid = new QStandardItem("1001"); item_uid->setIcon(QIcon(":/image/1.ico")); ptr.push_back(item_uid); QStandardItem *item_addr = new QStandardItem("192.168.1.1"); ptr.push_back(item_addr); QStandardItem *item_username = new QStandardItem("lyshark"); ptr.push_back(item_username); tree->appendRow(ptr);}
代码运行后,如下所示:
2.使用TreeWidget组件,自己定义一个菜单,并将该菜单绑定到Tree组件内,具体实现代码如下。
#include "mainwindow.h"#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); // 在MainWindow中使用右击菜单需要添加此项 ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu); // 创建基础顶部菜单 QMenuBar *bar = menuBar(); this->setMenuBar(bar); QMenu * fileMenu = bar->addMenu("菜单1"); // 实现只隐藏菜单1其他的不受影响 fileMenu->menuAction()->setVisible(false); // 添加子菜单 GetColumnAction = fileMenu->addAction("获取列号"); GetRowDataAction = fileMenu->addAction("获取本行数据"); GetLineAction = fileMenu->addAction("获取行号"); // 分别设置图标 GetColumnAction->setIcon(QIcon(":/image/1.ico")); GetRowDataAction->setIcon(QIcon(":/image/2.ico")); GetLineAction->setIcon(QIcon(":/image/3.ico")); // 为子菜单绑定热键 GetColumnAction->setShortcut(Qt::CTRL | Qt::Key_A); GetRowDataAction->setShortcut(Qt::SHIFT | Qt::Key_S); GetLineAction->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_B); // 设置treeWidget属性 ui->treeWidget->setColumnCount(4); // 设置总列数 ui->treeWidget->setColumnWidth(0,300); // 设置最后一列宽度自适应 ui->treeWidget->setIndentation(1); // 设置表头缩进为1 // 设置表头数据 QStringList headers; headers.append("文件名"); headers.append("更新时间"); headers.append("文件类型"); headers.append("文件大小"); ui->treeWidget->setHeaderLabels(headers); // 模拟插入数据到表中 for(int x=0;x<100;x++) { QTreeWidgetItem* item=new QTreeWidgetItem(); item->setText(0,""); item->setIcon(0,QIcon(":/image/1.ico")); item->setText(1,"2020-12-11"); item->setText(2,"*.pdf"); item->setText(3,"102MB"); item->setIcon(3,QIcon(":/image/2.ico")); ui->treeWidget->addTopLevelItem(item); }}MainWindow::~MainWindow(){ delete ui;}// 当treeWidget中的右键被点击时则触发// By: LyShark// https://www.cnblogs.com/lysharkvoid MainWindow::on_treeWidget_customContextMenuRequested(const QPoint &pos){ Q_UNUSED(pos); // 新建Menu菜单 QMenu *ptr = new QMenu(this); // 添加Actions创建菜单项 ptr->addAction(GetColumnAction); ptr->addAction(GetLineAction); // 添加一个分割线 ptr->addSeparator(); ptr->addAction(GetRowDataAction); // 在鼠标光标位置显示右键快捷菜单 ptr->exec(QCursor::pos()); // 手工创建的指针必须手工删除 delete ptr;} 最终我们实现的效果如下所示。
到此,相信大家对"C/C++ Qt TreeWidget单层树形组件怎么应用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
菜单
组件
数据
长度
单层
树形
属性
目录
表头
应用
字段
文件
代码
元素
内容
地址
宽度
手工
用户
结构
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技巨头监管
互联网最新的科技
今日互联网科技
互联网科技公司税收优惠
互联网科技有限公司图片
华中科技大学互联网
狮子座互联网科技培训
互联网 新科技
新华互联网科技校企合作
太原新华互联网科技学校怎么样
承德科技产业互联网发展
宁夏科技产业互联网案例
互联网科技与大数据专业
速维有品互联网信息科技(苏州)有限公司
电子科技大学互联网创业大赛
长沙互联网科技
美国互联网科技实力
广州富喜互联网络科技
西安有哪些互联网高科技企业
深圳互联网科技园地址
互联网属科技
智慧科技互联网
丰台科技园 互联网
亿账通互联网科技
团飞科技与伯堂互联网服务平台
宁夏科技产业互联网案例
崇明区互联网教育科技售后服务
搜狐科技互联网
沐思想互联网科技有限公司
深圳无忧互联网科技