当前位置: 首页 > 网络知识

Qt QTreeView 常见节点操作

时间:2026-01-29 09:27:16

QTreeView作为项目最经常使用的空间,常用接口和操作必须熟悉熟悉在熟悉!!!

1、节点遍历

1 void ParamSettingDlg::GetNode() 2 10 } 11 12 //GetItem 为递归函数,这样可以遍历到所有的节点 13 14 void ParamSettingDlg::GetItem(QStandardItem *item) 15 25 } 26 }

2、设置当前选中项

接口setCurrentIndex

1 for(int i = 0;i < standardModel_down>rowCount() ;i++) 2 15 } 16 } 17 qDebug() <<"item = " << item>text(); 18 }

3、树节点自定义样式

使用接口setIndexWidget,其实QTableWidget的setCellWidget借口内部也是调用 setIndexWidget。如下:

1 QStandardItem *children = new QStandardItem(); 2 QStandardItem *parent = model>item(r,c); 3 parent>appendRow(children); 4 5 QModelIndex index = model>indexFrItem(children); 6 ui>treeView>setIndexWidget(index,myLabel);

示例

1 Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) 2 ); 10 model>setItem(0, 0, new QStandardItem("张三")); 11 model>setItem(0, 1, new QStandardItem("3")); 12 13 QCboBox* cmb = new QCboBox(); 14 cmb>addItems(); 15 ui>tableView>setIndexWidget(model>index(0, 2), cmb); 16 17 model>setItem(1, 0, new QStandardItem("李四")); 18 model>setItem(1, 1, new QStandardItem("5")); 19 20 cmb = new QCboBox(); 21 cmb>addItems(); 22 ui>tableView>setIndexWidget(model>index(1, 2), cmb); 23 }

4、数据检索

借助代理类QSortFilterProxyModel

1 m_model = new QStandardItemModel(ui>treeView);//模型 2 m_pFilterModel = new QSortFilterProxyModel(ui>treeView);//过滤模型 3 4 m_pFilterModel>setSourceModel(m_model); 5 m_pFilterModel>setFilterCaseSensitivity(Qt::CaseInsensitive); //大小写不敏感 6 m_pFilterModel>setAutoAcceptChildRows(true); //父项满足时不过滤子项 7 m_pFilterModel>setRecursiveFilteringEnabled(true); //递归匹配满足的子节点,父类可见 8 //指定初始化过滤列 9 m_pFilterModel>setFilterKeyColumn(0); 10 ui>treeView>setModel(m_pFilterModel);

5、获取当前选中项
  通过QTreeView函数 currentIndex ()可以获取当前选中条目的QModelIndex,QModelIndex可以看做是QStandardItem的数据封装,知道 QModelIndex就可以知道QStandardItem,通过QStandardItemModel的 itemFrIndex 函数即可得到QModelIndex对应的QStandardItem。
如:

1 QStandardItemModel* model = static_cast< QStandardItemModel*>( ui> treeView> model()); 2 QModelIndex currentIndex = ui> treeView> currentIndex(); 3 QStandardItem* currentItem = model> itemFrIndex( currentIndex );



上一篇:Qt 设置全局字体
下一篇:三菱 FX2N PLC 输出端直流电磁阀和交流电磁阀接线
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素