Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我应该如何响应QTreeView中更改的文本?_C++_Qt_Qt4_Qtreeview - Fatal编程技术网

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
中(默认角色)。也许这个提示有帮助。。。