QTreeWidget的一些基本操作

1.insertTopLevelItems,insertTopLevelItem用来添加顶层的item

QTreeWidget *treeWidget = new QTreeWidget(this);//创建
treeWidget->setColumnCount(); //设置列
treeWidget->setHeaderLabel(tr("item tree")); //设置标题
treeWidget->setGeometry(,,this->width(),this->height()); //设置大小
QList<QTreeWidgetItem *> items; //创建两个节点
QTreeWidgetItem *fItem1 = new QTreeWidgetItem(treeWidget,QStringList(QString("f1")));
QTreeWidgetItem *fItem2 = new QTreeWidgetItem(treeWidget,QStringList(QString("f2"))); items.append(fItem1);
items.append(fItem2);
//添加顶层节点
treeWidget->insertTopLevelItems(,items);
//节点始终保持展开
treeWidget->setItemsExpandable(false);
treeWidget->expandAll();

2.父节点通过addChild增加子节点

//创建子节点
QTreeWidgetItem *fItem1a = new QTreeWidgetItem(fItem1,QStringList(QString("f1a")));
QTreeWidgetItem *fItem1b = new QTreeWidgetItem(fItem1,QStringList(QString("f1b"))); QTreeWidgetItem *fItem2a = new QTreeWidgetItem(fItem2,QStringList(QString("f2a")));
QTreeWidgetItem *fItem2b = new QTreeWidgetItem(fItem2,QStringList(QString("f2b"))); //添加字节点
fItem1->addChild(fItem1a);
fItem1->addChild(fItem1b); fItem2->addChild(fItem2a);
fItem2->addChild(fItem2b);

3.建立鼠标点击右键点击信号检测

//检测点击事件
connect(treeWidget,SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(itemClick(QTreeWidgetItem*,int)));
//检测鼠标右键
treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
connect(treeWidget,SIGNAL(customContextMenuRequested(const QPoint&)), this,SLOT(popMenu(const QPoint&)));

4.槽函数

void Widget::itemClick(QTreeWidgetItem *item, int column)
{
QTreeWidgetItem *parent = item->parent(); //获取父节点
if(NULL==parent) //注意:最顶端项是没有父节点的
return;
int col = parent->indexOfChild(item); //item在父项中的节点行号(从0开始)
} //弹出菜单
void Widget::popMenu(const QPoint &)
{
QTreeWidgetItem* curItem=treeWidget->currentItem(); //**获取当前被点击的节点
if(curItem == NULL || curItem->parent() == NULL)
return; //右键的位置在空白位置右击或者点击的是顶层item //创建一个action
QAction deleteItem(QString::fromLocal8Bit("&删除"),this);
connect(&deleteItem, SIGNAL(triggered()), this, SLOT(deleteItem()));
QPoint pos;
//创建一个菜单栏
QMenu menu(treeWidget);
menu.addAction(&deleteItem);
menu.exec(QCursor::pos()); //在当前鼠标位置显示
} //删除item
void Widget::deleteItem()
{
QTreeWidgetItem* curItem=treeWidget->currentItem();
curItem->parent()->removeChild(treeWidget->currentItem());
}

Qt之QTreeWidget入门的更多相关文章

  1. [Qt Creator 快速入门] 第5章 应用程序主窗口

    对于日常见到的应用程序而言,许多都是基于主窗口的,主窗口中包含了菜单栏.工具栏.状态栏和中心区域等.这一章会详细介绍主窗口的每一个部分,还会涉及资源管理.富文本处理.拖放操作和文档打印等相关内容.重点 ...

  2. [Qt Creator 快速入门] 第2章 Qt程序编译和源码详解

    一.编写 Hello World Gui程序 Hello World程序就是让应用程序显示"Hello World"字符串.这是最简单的应用,但却包含了一个应用程序的基本要素,所以 ...

  3. [Qt Creator 快速入门] 第1章 Qt Creator简介

    Qt Creator 是一个跨平台的.完整的 Qt 集成开发环境,其中包括了高级C++代码编辑器.项目和生成管理工具.集成的上下文相关的帮助系统.图形化调试器.代码管理和浏览工具等.这一章先对 Qt ...

  4. Qt安装与入门

    一.Qt SDK1.2安装 准备QtSdk-offline-win-x86-v1_2_1.exe离线安装包. 安装QtSDK时注意不要有中文路径,空格以及特殊字符.可以自定义选择组件安装,也可以默认安 ...

  5. Qt 动画快速入门(一)

    Qt-4.6动画Animation快速入门三字决 Qt-4.6新增了Animation Framework(动画框架),让我们能够方便的写一些生动的程序.不必像以前的版本一样,所有的控件都枯燥的呆在伟 ...

  6. 《QT Creator快速入门》

    ui中的类,这样使用无法通过调试: Ui::Dialog ui(&w); w.show(); 而需要改成: Ui::Dialog ui; ui.setupUi(&w); w.show( ...

  7. QT学习:入门篇(三)

    头文件: #ifndef CChatDisplaySet_h #define CChatDisplaySet_h #include "QtGui/QDialog" #include ...

  8. QT Creator 快速入门教程 读书笔记(一)

    一 Qt简介 Qt 是一个跨平台的C++应用程序框架,支持Windows.Linux.Mac OS X.Android.iOS.Windows Phone.嵌入式系统等.也就是说,Qt 可以同时支持桌 ...

  9. QT Creator 快速入门教程 读书笔记(二)

    一 窗口部件 基础窗口部件QWidget类是所有用户界面对象的基类,窗口和控件都是直接或间接继承自 QWidget,下面我们来看一个很简单的例子: 窗口部件(Widget)简称部件,是QT中建立界面的 ...

随机推荐

  1. LoadRunner学习笔记(1)--异常处理方法

    1.查看端口号占用情况 cmd  -> netstat  -ano  找到进程关闭后在重启网站 2.LR录制脚本时为何不弹出IE浏览器 启动浏览器,打开Internet选项对话框,切换到高级标签 ...

  2. Heap Sort - recursion

    Heap Sort  Build a max heap using exsiting array, which is called Heapify Swap root with the last el ...

  3. pytorch怎么抽取中间的特征或者梯度

    for i, (input, target) in enumerate(trainloader): # measure data loading time data_time.update(time. ...

  4. Sqlite 参数化 模糊查询 解决方案

    转自:https://codedefault.com/2018/does-dapper-support-the-like-operator-in-csharp-application 问题描述 如题, ...

  5. 往redis中存储数据是利用pipeline方法

    在redis中保存数据时,保存和设置有效时间是分开写的话,如果中间出现的异常,这会导致数据永久有效,因此就可以采用pipeline方法. # 创建redis管道对象,可以一次执行多个语句 pipeli ...

  6. Jmeter 非 GUI 命令行执行脚本文件

    https://www.cnblogs.com/yebaofang/p/9803273.html

  7. echarts数据区域缩放(鼠标滚轮、滚动条、拉选框)

    当一个echarts图表上的数据很多时,想要查看部分区域的数据状态,可以通过数据区域缩放来实现,现总结三个方法: 鼠标滚轮缩放: var arr = []; for(var i = 0;i<15 ...

  8. 【转】Cookie/Session机制详解

    Cookie/Session机制详解   会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息 ...

  9. 巡风配置安装 –centOS6.5

    巡风是一款适用于企业内网的漏洞快速应急.巡航扫描系统,通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表. 其主体分为两部分:网络资产识别引擎,漏 ...

  10. spring4注解配置datasource方式

    package com.boot.config; import org.springframework.context.annotation.AnnotationConfigApplicationCo ...