是否可以知道树中的项目何时被重命名?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以知道树中的项目何时被重命名?相关的知识,希望对你有一定的参考价值。

我正在使用QTreeWidget。我允许用户重命名树中的项目。然而,每当一个项目被重命名时,我必须在后台管理一些东西。所以我需要弄清楚用户何时重命名一个项目。我已经看过插槽“ItemChanged”,但我不知道这个插槽是否仅在重命名项目时使用。

这是我如何将项目设置为可重复的。

default_item->setSelected(true);
default_item->setFlags(default_item->flags() | Qt::ItemIsEditable);
答案

只要项目中任何角色的数据发生变化,就会发出itemChanged信号。这包括当Qt::DisplayRole因用户编辑名称或调用QTreeWidgetItem::setData而更改时。它也会在其他一些情况下发出,例如标志更改时以及启用/禁用项目时。

如果您只想知道名称更改的时间,则可以直接连接到基础模型的dataChanged信号,并检查roles参数以获取Qt::DisplayRole角色。例如:

connect(treeWidget->model(), &QAbstractItemModel::dataChanged,
[](const QModelIndex &index, const QModelIndex &, const QVector<int> &roles) {
  if (roles.contains(Qt::DisplayRole))
    qDebug("Display role changed!");
});

以上是关于是否可以知道树中的项目何时被重命名?的主要内容,如果未能解决你的问题,请参考以下文章

何时使用活动转换与动态片段的模式

git 检测您的 Java 项目中的重命名/移动效果不佳 - 该怎么办?

是否可以知道何时显示特定的全景项目

如何知道片段何时在 viewpager 中实际可见

何时从android中的布局加载片段中的视图

(项目生成报错提示)项目文件""已被重命名或已不在解决方案中