我应该如何响应在QTreeView中更改的文本

How should I respond to text being changed in a QTreeView?

本文关键字:QTreeView 文本 何响应 响应 我应该      更新时间:2023-10-16

我有一个QTreeView填充了一些QStandardItem s。这些项目是可编辑的,我希望通过编程,在项目的文本通过信号或事件过滤器更改时做出反应。我找不到符合要求的东西。我尝试了QStandardModel::itemChanged,但这对其他项目数据的变化做出了反应,而且我没有看到区分文本内容和用户数据变化的方法。解决这个问题的最佳方法是什么?

为了解决这个问题,我从QStandardItem中派生了一个类,并重写了QStandardItem::setData,就像这样:

void MyStandardItem::setData(const QVariant& value, int role)
{
    if (role == Qt::EditRole) {
        doStuff();
    }
    QStandardItem::setData(value, role);
}