当前位置: 首页 > news >正文

【接口封装】——18、添加目录项列表响应

 解释:

1、封装内容:列表显示

2、Qt::UserRole:设置不同的值,以此区分多级目录项

函数定义:

	void onTreeItemClicked(QTreeWidgetItem* item);
	void onTreeItemDoubleClicked(QTreeWidgetItem* item);
	void onTreeItemExpanded(QTreeWidgetItem* item);
	void onTreeItemCollapsed(QTreeWidgetItem* item);	//缩放
    void initContact();

源代码:


void CCMainWindow::initContact()
{

	//根项
	QTreeWidgetItem* rootItem = new QTreeWidgetItem;
	rootItem->setData(0, Qt::UserRole, 0);  //根项设置为 0,子项为 1, 以示区分根项子项

	RootContactItem* rootWidget = new RootContactItem(true, ui.treeWidget);
	rootWidget->setText(RootContact_TEXT);

	ui.treeWidget->addTopLevelItem(rootItem);	//添加顶级项
	ui.treeWidget->setItemWidget(rootItem, 0, rootWidget);

	//连接根项目录的信号与槽函数
	connect(ui.treeWidget, &QTreeWidget::itemClicked, this, &CCMainWindow::onTreeItemClicked);
	connect(ui.treeWidget, &QTreeWidget::itemDoubleClicked, this, &CCMainWindow::onTreeItemDoubleClicked);
	connect(ui.treeWidget, &QTreeWidget::itemExpanded, this, &CCMainWindow::onTreeItemExpanded);
	connect(ui.treeWidget, &QTreeWidget::itemCollapsed, this, &CCMainWindow::onTreeItemCollapsed);		//折叠


}

void CCMainWindow::onTreeItemClicked(QTreeWidgetItem * item)
{
	bool isRoot = !(item->data(0, Qt::UserRole).toBool());	//根项被设置为0,isRoot:true
	if (isRoot) {
		item->setExpanded(!item->isExpanded());
	}

}

void CCMainWindow::onTreeItemDoubleClicked(QTreeWidgetItem * item)
{
	bool isChild = item->data(0, Qt::UserRole).toBool();//子项被设置为1
	if (isChild) {
		qDebug() << QString::fromLocal8Bit("打开聊天窗口:") << item->data(0, Qt::UserRole + 1);
		
	}

}

void CCMainWindow::onTreeItemExpanded(QTreeWidgetItem * item)
{
	bool isRoot = !(item->data(0, Qt::UserRole).toBool());	//根项被设置为0,isRoot:true
	if (isRoot) {
		RootContactItem* rootWidget = dynamic_cast<RootContactItem*>(ui.treeWidget->itemWidget(item, 0));
		if (rootWidget) {
			rootWidget->setExpanded(true);
		}
	}
}

//折叠:collapsed
void CCMainWindow::onTreeItemCollapsed(QTreeWidgetItem * item)
{
	bool isRoot = !(item->data(0, Qt::UserRole).toBool());	//根项被设置为0,isRoot:true
	if (isRoot) {
		//dynamic_cast:强制类型转换
		RootContactItem* rootWidget = dynamic_cast<RootContactItem*>(ui.treeWidget->itemWidget(item, 0));
		if (rootWidget) {
			rootWidget->setExpanded(false);
		}
	}

}




	RootContactItem(bool hasArrow = true, QWidget *parent = nullptr);

相关文章:

  • AMD(xilinx) FPGA书籍推荐
  • RabittMQ保证消息不丢失的几种手段
  • Spring Boot 项目中慢SQL优化方案
  • 基于微信小程序的超市购物系统+论文源码调试讲解
  • 【文心索引】搜索引擎测试报告
  • 【计算机网络】计算机网络的性能指标——时延、时延带宽积、往返时延、信道利用率
  • Trae IDE新建C#工程
  • 双目立体视觉(6.1)测距
  • 2025年科技趋势深度解析:从“人工智能+”到量子跃迁的技术革命
  • 练习题:72
  • 时序数据库 TDengine 化工新签约:存储降本一半,查询提速十倍
  • 基于NIST后量子算法的混合加密系统
  • 动态规划背包刷题
  • 量化交易全面入门指南(2025最新版)
  • 智能疫苗查漏补种智能体创建逻辑和步骤
  • Nodemailer使用教程:在Node.js中发送电子邮件
  • HiveServer2与Spark ThriftServer详细介绍对比
  • 深度学习模型Transformer核心组件—自注意力机制
  • python-leetcode-解决智力问题
  • MyBatis-Plus 与 Redis
  • 网站网站制作/软文生成器
  • 平面设计高端网站/今日全国疫情最新消息
  • 济南网站建设培训/外链网址
  • 广州番禺区房价/厦门零基础学seo
  • 网站链接失效怎么做/口碑营销的特征
  • 西安免费做网站公司/网上全网推广