C++ 我应该如何响应QTreeView中更改的文本?
我有一个C++ 我应该如何响应QTreeView中更改的文本?,c++,qt,qt4,qtreeview,C++,Qt,Qt4,Qtreeview,我有一个QTreeView,里面填充了一些QStandardItems。这些项目是可编辑的,我想编程,以便在项目的文本更改时做出反应,无论是通过信号还是事件过滤器。我找不到任何能填上账单的东西。我尝试了QStandardModel::itemChanged,但这会对其他项目数据的更改做出响应,我看不到区分文本内容和用户数据更改的方法。最好的方法是什么 为了解决这个问题,我从QStandardItem派生了一个类,并重写了QStandardItem::setData,如下所示: void MySt
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);
}
我不知道答案,但请注意,编辑文本发生在
Qt::EditRole
中,而不是在Qt::DataRole
中(默认角色)。也许这个提示有帮助。。。