C/C++ Qt TreeWidget单层树形组件怎么应用
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,本篇内容主要讲解"C/C++ Qt TreeWidget单层树形组件怎么应用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C/C++ Qt TreeWid
千家信息网最后更新 2025年11月10日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安全错误
数据库的锁怎样保障安全
云服务器安全平台
农作物病虫害防治数据库技术
广州项目软件开发定做
烟草多举措加强网络安全
苏州程序软件开发机构
萤石云显示服务器超时要改哪里
数据库选择厂商
软件开发周期各阶段
服务器APP管理
东莞市域天软件开发公司
关于网络安全的知识和方法
数据中心组织学习网络安全法
邮乐网络技术公司
网络安全技术求职简历
河北智能软件开发价格如何计算
数据库流行度榜单
2020年网络安全事件处理
电气数据库需要自己定制吗
咸宁手机数据库修复推荐
付宝中国网络技术
淘宝客服显示连不到服务器
dns 服务器备份
武汉天马软件开发
如何快速获得新服务器
NCRE网络技术报名费
gportal服务器怎么踢人
三大综合性数据库是哪些
北京农业银行软件开发在哪
手机app软件开发人员招聘
缓存替换数据库操作