Qt之QTreeWidget入门
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入门的更多相关文章
- [Qt Creator 快速入门] 第5章 应用程序主窗口
		
对于日常见到的应用程序而言,许多都是基于主窗口的,主窗口中包含了菜单栏.工具栏.状态栏和中心区域等.这一章会详细介绍主窗口的每一个部分,还会涉及资源管理.富文本处理.拖放操作和文档打印等相关内容.重点 ...
 - [Qt Creator 快速入门] 第2章 Qt程序编译和源码详解
		
一.编写 Hello World Gui程序 Hello World程序就是让应用程序显示"Hello World"字符串.这是最简单的应用,但却包含了一个应用程序的基本要素,所以 ...
 - [Qt Creator 快速入门] 第1章 Qt Creator简介
		
Qt Creator 是一个跨平台的.完整的 Qt 集成开发环境,其中包括了高级C++代码编辑器.项目和生成管理工具.集成的上下文相关的帮助系统.图形化调试器.代码管理和浏览工具等.这一章先对 Qt ...
 - Qt安装与入门
		
一.Qt SDK1.2安装 准备QtSdk-offline-win-x86-v1_2_1.exe离线安装包. 安装QtSDK时注意不要有中文路径,空格以及特殊字符.可以自定义选择组件安装,也可以默认安 ...
 - Qt 动画快速入门(一)
		
Qt-4.6动画Animation快速入门三字决 Qt-4.6新增了Animation Framework(动画框架),让我们能够方便的写一些生动的程序.不必像以前的版本一样,所有的控件都枯燥的呆在伟 ...
 - 《QT Creator快速入门》
		
ui中的类,这样使用无法通过调试: Ui::Dialog ui(&w); w.show(); 而需要改成: Ui::Dialog ui; ui.setupUi(&w); w.show( ...
 - QT学习:入门篇(三)
		
头文件: #ifndef CChatDisplaySet_h #define CChatDisplaySet_h #include "QtGui/QDialog" #include ...
 - QT Creator 快速入门教程 读书笔记(一)
		
一 Qt简介 Qt 是一个跨平台的C++应用程序框架,支持Windows.Linux.Mac OS X.Android.iOS.Windows Phone.嵌入式系统等.也就是说,Qt 可以同时支持桌 ...
 - QT Creator 快速入门教程 读书笔记(二)
		
一 窗口部件 基础窗口部件QWidget类是所有用户界面对象的基类,窗口和控件都是直接或间接继承自 QWidget,下面我们来看一个很简单的例子: 窗口部件(Widget)简称部件,是QT中建立界面的 ...
 
随机推荐
- configparser模块(ini配置文件生成模块)
			
config = configparser.ConfigParser() #初始化config对象 [DEFAULT] #设置默认的变量值,初始化 config["DEFAULT" ...
 - 如何使用idea给系统平台添加子应用和应用的模块
			
1.添加模块smartcity-portal,由于模块是在smartcity-framework工程下的,所以按照图片所示添加 2.smartcity-portal模块添加完成后,由于portal-d ...
 - AI五子棋需求规格说明书
			
AI-Gobang AI五子棋小程序 github地址:https://github.com/holidaysss/AI-Gobang 程序简介 AlphaGo Zero在世界舞台上取得的巨大成功体现 ...
 - git同步遇到报错
			
git同步遇到报错 “fatal: unable to access ‘https://github.com/ruanwenwu/newp.git/‘: Peer reports incompatib ...
 - 1945 : 卡贩子Carol
			
题目描述 来自F星球的Carol是一个不折不扣的“正版游戏受害者”,在黑色星期五的疯狂购买后,钱包渐空的Carol突然发现TA所使用的游戏交易平台上有个值得留意的地方————集换式卡牌. 集换式卡牌是 ...
 - 解决eclipse使用tomcat启动项目后访问项目404的问题
			
今天启动项目的时候发现项目启动没有问题,但是一直访问不到页面,F12发现根本没有交互,百度后解决了,故记下来为以后提供方法,若有不同的解决方法,欢迎指教 1.首先要确保你的tomcat下没有项目,怎么 ...
 - springCloud、springBoot学习
			
http://projects.spring.io/spring-cloud/ 官网https://springcloud.cc/spring-cloud-netflix.htmlhttp://cl ...
 - 9th week blog
			
1957年 约翰·巴科斯(John Backus)创建了是全世界第一套高阶语言:FORTRAN. 1959年 葛丽丝·霍普(Grace Hopper)创造了现代第一个编译器A-0 系统,以及商用电脑编 ...
 - Servlet中的编码问题
			
对于response.setContentType()和response.setCharacterEncoding()的理解: 经过一些实践,对着两个方法有了一些自己的理解,有可能今后的学习中会发现自 ...
 - python中常见的报错,总结一下,以后看。
			
AttributeError 试图访问一个对象没有的属性,比如,乔峰.nameIOError 输入.输出异常:基本上无法打开文件ImportError 无法引入模块或者是包:基本上是路径问题,或者是名 ...