0

我有QTreeView一些QStandardItems。这些项目是可编辑的,我想通过信号或事件过滤器对项目的文本进行更改时进行编程。我找不到任何能满足要求的东西。我试过QStandardModel::itemChanged了,但这会响应其他项目数据的变化,我看不到区分文本内容和用户数据变化的方法。解决这个问题的最佳方法是什么?

4

1 回答 1

0

为了解决这个问题,我最终从 QStandardItem 派生了一个类并覆盖了 QStandardItem::setData ,如下所示:

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

    QStandardItem::setData(value, role);
}
于 2013-01-25T17:15:30.983 回答