既然TreeView 的 currentIndex 更新有问题,我们引入 ItemSelectionModel 来处理选择。引入 ItemSelectionModel 后,发现 selection 的 currentIndex 和 TreeView 的 currentIndex 有时候会不一致,高亮优先显示 selection 的,但是按键优先用 view 的,两个 index 不一致的时候行为就很怪异。解决方式也是提前设置操作之后的 ind...
1、判断是否为根节点 QModelIndex currentIndex = treeView->currentIndex(); QStandardItem* currentItem = model->itemFromIndex(currentIndex);// 如果是根目录,是否存在父节点来判断是否为根目录boolisRootItem = (currentItem->parent() == nullptr); 2、存储并获取数据 // 存储数据QStandardItem* item = new ...
delete ui->treeWidget->takeTopLevelItem(ui->treeWidget->currentIndex().row()); std::cout << ui->treeWidget->currentIndex().row() << std::endl; } else { // 如果有父节点就要用父节点的takeChild删除节点 delete currentItem->parent()->takeChild(ui->treeWidget->currentIndex().row()); } ...
treeview自有属性currentIndex是只读属性,不可修改,当删除一个节点后,选中删除节点下面的节点(不分父子),currentIndex没有变,仍然保持了被删除节点的index,而删除节点后选中其他节点currentIndex都会随之改变,用者请注意
通过QTreeView函数 currentIndex ()可以获取当前选中条目的QModelIndex,QModelIndex可以看做是QStandardItem的数据封装,知道 QModelIndex就可以知道QStandardItem,通过QStandardItemModel的 itemFromIndex 函数即可得到QModelIndex对应的QStandardItem。 如: QStandardItemModel* model = static_cast< QStandardItemModel*>( ui-> treeView...
QTreeView提供了一个名为currentIndex()的方法,该方法返回一个QModelIndex对象,该对象表示当前选中的项。通过这个方法,我们可以获取到当前选中的节点在模型中的索引。 2. 从选中节点中提取内容 一旦我们有了QModelIndex,就可以使用QStandardItemModel(假设你的模型是QStandardItemModel)的itemFromIndex()方法将索引转换为QStandar...
if(currentindex.row()==-1) //如果未选中树节点的一项则return return; currentItem = model1->itemFromIndex(currentindex); kqDateDicWidget dlg; //点击按钮后弹出一个窗口进行数据的添加 dlg.setTitle("add"); //次窗口的ui是kqdatadicwidget.ui相应的.cpp和.h文件见项目目录 ...
const QModelIndex index = treeView->selectionModel()->currentIndex(); QString selectedText = index.data(Qt::DisplayRole).toString(); //find out the hierarchy level of the selected item int hierarchyLevel=1; QModelIndex seekRoot = index; ...
QModelIndex parentIndex = treeView->currentIndex().parent(); // 获取当前选中行的父行索引 int targetColumn = 1; // 假设要获取第2列的值 if (parentIndex.isValid()) { // 确保父行索引有效 QAbstractItemModel* model = treeView->model(); // 获取数据模型 ...
1. 通过QTreeView的currentIndex()函数,获取当前结点的索引 2. 通过QStandardItemModel的itemFromIndex()函数,获取当前结点 3. 通过QStandardItem的parent()函数,获取当前结点的父结点 4. 用父结点添加一个新结点 2.实现 代码如下: // 实例化一个要添加的结点QStandardItem* item =newQStandardItem(QStringLiteral("新...