QStandardItem * 获得 QModelIndex
时间: 2023-07-13 07:36:55 浏览: 48
要从 QStandardItem 对象获取 QModelIndex,可以使用 QStandardItemModel 的 indexFromItem() 方法。这个方法接受一个 QStandardItem 对象作为参数,返回该项对应的 QModelIndex。
下面是一个示例代码,假设要获取名为“Second Item”的节点的 QModelIndex:
```cpp
QStandardItemModel *model = new QStandardItemModel();
ui->treeView->setModel(model);
QStandardItem *rootItem = model->invisibleRootItem();
QStandardItem *secondItem = new QStandardItem("Second Item");
rootItem->appendRow(secondItem);
QModelIndex index = model->indexFromItem(secondItem);
```
现在,变量 index 中包含名为“Second Item”的节点的 QModelIndex。可以使用这个 QModelIndex 进行许多操作,例如使用 QTreeView 的 setCurrentIndex() 方法来选择这个节点。
相关问题
MyTreeView选中某个QStandardItem*对象用什么接口
要在`MyTreeView`中选中某个`QStandardItem`对象,可以使用`QTreeView`的`setCurrentIndex()`函数。
首先,您需要获取要选中的`QStandardItem`对象的索引,可以使用`QStandardItemModel`的`indexFromItem()`函数来获取索引。
然后,使用`QTreeView`的`setCurrentIndex()`函数将索引设置为当前选中项。以下是一个示例代码:
```cpp
// 获取要选中的QStandardItem对象
QStandardItem* item = /* 获取要选中的QStandardItem对象 */;
// 获取索引
QModelIndex index = model->indexFromItem(item);
// 选中项
treeView->setCurrentIndex(index);
```
在上述示例中,我们首先获取要选中的`QStandardItem`对象,然后使用`model->indexFromItem(item)`函数获取该项的索引。最后,使用`treeView->setCurrentIndex(index)`将索引设置为当前选中项。
请注意,上述示例中的`model`和`treeView`是指您使用的具体的`QStandardItemModel`和`QTreeView`对象,您需要根据实际情况进行替换。
c++ qt 修改 QStandardItem * 节点后 刷新
当您在 `QStandardItemModel` 中成功更新一个 `QStandardItem` 节点后,您可以使用 `QStandardItemModel::dataChanged()` 函数来通知视图(比如 `QTreeView` 或 `QTableView`)更新显示的数据。
以下是一个示例代码:
```c++
// 找到要修改的节点
QModelIndex index = model->index(row, column, QModelIndex());
QStandardItem *item = model->itemFromIndex(index);
// 更新节点的数据
item->setData(new_data, Qt::DisplayRole);
// 发送数据更新信号
model->dataChanged(index, index);
```
在上面的代码中,`row` 和 `column` 是要修改的节点的行和列,`new_data` 是要设置的新数据。`model` 是 `QStandardItemModel` 对象。使用 `model->dataChanged()` 函数发出更新信号时,需要传递要更新的数据的起始索引和结束索引。在这种情况下,我们只更新了单个节点,因此起始索引和结束索引都是相同的 `index`。