C/C++ Qt TreeWidget单层树形组件怎么应用
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容主要讲解"C/C++ Qt TreeWidget单层树形组件怎么应用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C/C++ Qt TreeWid
千家信息网最后更新 2025年01月19日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安全错误
数据库的锁怎样保障安全
深圳塘尾网络安全吗
网络安全座谈会举报中心
上海服务器电源什么牌子好
警花街头宣传网络安全法
fpga串口服务器
服务器说课
阿里云服务器空间价格
数据库11g和12c
2个数据库之间链接查询
java软件开发笔试
云服务器运营管理发展
互助县网络安全宣传周活动
河北app软件开发推荐
制定网络安全法的首要目的
挖矿搭建香港中转服务器
网络安全厂商中标
网络安全讲座观后感800字
技术 网络安全
保护网络安全隐私有哪些意义
软件测试数据库的缺陷
网络安全这个职业怎么样
越南网络安全新闻
数据库增加长度锁表
在线直播软件开发价格
pubmed数据库入口
战神引擎服务端数据库
实验小鼠数据库
三级数据库技术 考试
服务名和服务器名称怎么填
社会共治 网络安全