QT之QTreeWidget的使用

您所在的位置:网站首页 qt创建多个子项目 QT之QTreeWidget的使用

QT之QTreeWidget的使用

2023-08-05 07:24| 来源: 网络整理| 查看: 265

QTreeWidget的进阶使用小技巧 (一)、QTreeWidget的Item展开情况: 1.显示时,所有Item展开:

//数据添加完成,保证所有数据都是展开形状 ui->treeWidget->setItemsExpandable(true); //子Item是否可以被展开 ui->treeWidget->expandAll();

2.点击顶层Item项时,其内部所有的Item被展开:

暂时未写,可借鉴Qt文档中的 void expandItem(const QTreeWidgetItem *item);内置槽函数来完成

(二)、右击QTreeWidgetItem弹出菜单:

1.鼠标右击Item弹出相同菜单

1.在UI界面中创建QTreeWidget,关联QTreeWidget的customContextMenuRequested信号 connect(ui->treeWidget,&QTreeWidget::customContextMenuRequested,this,&DataMonitor::EquListTreeShowRightMenu); //在槽函数EquListTreeShowRightMenu中进行处理,这个槽函数是自己定义的 QTreeWidgetItem *clickedItem = ui->treeWidget->itemAt(pos); if(clickedItem != NULL) { topItemMoveMenu->exec(QCursor::pos()); //弹出菜单 }

2.鼠标右击不同层次Item,弹出不同菜单

1.在UI界面中创建QTreeWidget,关联QTreeWidget的customContextMenuRequested信号 connect(ui->treeWidget,&QTreeWidget::customContextMenuRequested,this,&DataMonitor::EquListTreeShowRightMenu); //在槽函数EquListTreeShowRightMenu中进行处理,这个槽函数是自己定义的 QTreeWidgetItem *clickedItem = ui->treeWidget->itemAt(pos); if(clickedItem != NULL) { QTreeWidgetItem *tmpItem = clickedItem; QTreeWidgetItem *equItem = NULL; int conutLevel = 1; //循环判断是那一层的Item while(tmpItem->parent()) { conutLevel++; tmpItem = tmpItem->parent(); } //右键弹出响应菜单 if(conutLevel == 1) { topItemMoveMenu->exec(QCursor::pos()); //弹出第一层Item对应的菜单 } if(conutLevel == 2) { equTreeEquMenu->exec(QCursor::pos()); //弹出第二层Item对应的菜单 } }

(三)、如何保持多列QTreeWidget的每列宽度同步到内部QTableWidget中

思路:QTreeWidget中提供了一个 void sectionResized(int logicalIndex, int oldSize, int newSize);信号, 用来告诉那一列的宽度发生了变化或者哪一行的高度发生了变化,两个参数分别表示改变前的宽度/高度和改变后的宽度和高度;只 需要写一个槽函数,配合 void setColumnWidth(int column, int width);来手动设置每列的宽度,实现改变顶层列宽, 内部表格列宽也发生变化。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3