Qt中怎么实现Qtreewidget节点的撤销重做

Qt中怎么实现Qtreewidget节点的撤销重做,第1张

增与删

下面是添加的功能:

//这是添加根节点的功能实现this->connect(ui->Root_btn, SIGNAL(clicked(bool)), this, SLOT(addRoot()));void Widget::addRoot()

{

QString one = ui->first->text();

QString two = ui->second->text();

QString three = ui->third->text();

QTreeWidgetItem item = new QTreeWidgetItem();

item->setText(0, one);

item->setText(1, two);

item->setText(2, three);

ui->Tree->addTopLevelItem(item);

}//这是添加叶子节点的实现this->connect(ui->Child_btn, SIGNAL(clicked(bool)), this, SLOT(addChild()));void Widget::addChild()

{

QString one = ui->first->text();

QString two = ui->second->text();

QString three = ui->third->text();

QTreeWidgetItem parent = ui->Tree->currentItem();

QTreeWidgetItem item = new QTreeWidgetItem();

item->setText(0, one);

item->setText(1, two);

item->setText(2, three); parent->addChild(item);

}

添加叶子节点字需要注意父节点的获取就可以了。

下面是删除节点的功能:

this->connect(ui->DEL_btn, SIGNAL(clicked(bool)), this, SLOT(deleteNode()));

void del(QTreeWidgetItem node){ if(node->childCount() > 0)

{ for(int i = 0; i < node->childCount(); i ++)

{ del(node->child(i));

}

}

else

{

delete node;

}

}

void Widget::deleteNode()

{

QTreeWidgetItem item = ui->Tree->currentItem();

if(item->childCount() > 0)

{ for(int i = 0; i < item->childCount(); i ++)

{ del(item->child(i));

}

}

delete item;

}

删除节点时记得循环删除这个节点下面的所有的子节点。

热门频道

首页

博客

研修院

VIP

APP

问答

下载

社区

推荐频道

活动

招聘

专题

打开CSDN APP

Copyright © 1999-2020, CSDNNET, All Rights Reserved

打开APP

C/C++ Qt ListWidget 列表框组件应用 原创

2022-11-03 20:01:34

十年编程老舅

码龄143天

关注

ListWidget列表框组件,该组件与TreeWidget有些相似,区别在于TreeWidget可以实现嵌套以及多字段结构,而ListWidget组件则只能实现单字段结构,ListWidget组件常用于显示单条记录,例如只显示IP地址,用户名等数据,如下笔记是本人在开发中经常用到的一些基本 *** 作技巧,包括列表框组件的基本 *** 作方法。

常用节点间的 *** 作方法如下:

ListView 组件与应用基础

ListWidget 初始化

ListWidget 变化行(触发事件)

ListWidget 编辑状态设置

ListWidget 全选/全不选

ListWidget 反选(对错交织)

ListWidget 指定位置插入 / 增加一项

ListWidget 删除选中项

ListView 组件与应用基础: 该组件与ListWidget功能一致,只是ListView无法实现编辑只能预览。

QT技术文推荐:Qt开发必备技术栈学习路线和资料

代码运行效果如下:

上方代码中我们多数都是在使用View视图组件,接下来将具体分析Widget组件的使用细节,View组件与Widget组件看似一致,但却存在本质区别,其大致区别如下:

Widget 组件可以直接通过如AddItem等一系列函数 *** 作特定数据集,该组件还具有直接编辑的能力。

View 组件是基于Model模型映射工作的,每次 *** 作数据时都需要借助QAbstractListModel数据模型来 *** 作。

简单来说View组件适合于浏览展示数据较多的场景,因为其绑定了链表结构从而在数据的展示上更为灵活,而Widget组件更适合于更新或修改数据较多的使用场景。

ListWidget 节点初始化: 节点的初始化就是向widget组件内插入一个QListWidgetItem类。

代码运行效果如下:

ListWidget 行内文本变化: 当我们点击行内任意一个列表选项时,我们让其触发currentItemChanged并将变化行更新到窗体上。

代码运行效果如下:

ListWidget 编辑状态设置: 默认情况下ListWidget组件内所有文件是不可编辑的,我们也可以将编辑属性打开。

代码运行效果如下:

QT技术文推荐:Qt开发必备技术栈学习路线和资料

ListWidget 全选/全不选: 全选顾名思义就是选中菜单中的所有数据,使用aItem->setCheckState(Qt::Checked)实现选中,通过循环计数即可。

代码运行效果如下:

ListWidget 反选功能: 反选的含义是,用户选中菜单反选后会变为未选中状态,未选中则变为选中,只需要增加一个判断即可实现。

代码运行效果如下:

ListWidget 指定位置插入/追加插入: 在选中行的上方插入一行新的表项,以及追加到末尾一行。

代码运行效果如下:

ListWidget 删除选中项: 删除当前选中的一项,并清理释放内存。

代码运行效果如下:

文章知识点与官方知识档案匹配

C技能树首页概览

115836 人正在系统学习中

打开CSDN APP,看更多技术内容

listview listwidget

qt

c++

写评论

评论

收藏

点赞

分享

void QTreeWidget::itemEntered ( QTreeWidgetItem item, int column ) [signal]

This signal is emitted when the mouse cursor enters an item over the specified column QTreeWidget mouse tracking needs to be enabled for this feature to work

你把treewidget->setMouseTracking(true)试下

我有个思路,你的好友列表既然是treeWidgetItem ,那么,当你打开聊天对话框的时候你就给对应的好友所在的Item设置一下,item->setText(1,"OPEN");关闭对话框的时候设置为"Close";

然后再双击的时候就判断那个Item的第一个Text的值,查看是否为close,是的话就打开对话框,不是的话就不打开。

我想这个思路应该可行,有问题再补充!

以上就是关于Qt中怎么实现Qtreewidget节点的撤销重做全部的内容,包括:Qt中怎么实现Qtreewidget节点的撤销重做、怎么将listwidget作为treewidget的项、关于qt中的QTreeWidget的拖放问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9324394.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存