QT之QTreeWidget的使用 |
您所在的位置:网站首页 › qt创建多个子项目 › QT之QTreeWidget的使用 |
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 |