Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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
Qt 5.3.1表格视图未更新_Qt_Tableview_Qml_Qt Quick - Fatal编程技术网

Qt 5.3.1表格视图未更新

Qt 5.3.1表格视图未更新,qt,tableview,qml,qt-quick,Qt,Tableview,Qml,Qt Quick,最近,我从Qt5.3.0升级到Qt5.3.1,注意到我的TableView在对代理模型排序时不再更新,它使用QSortFilterProxy模型作为模型 您可以通过使用示例代码看到这一点 如果使用Qt5.3.0编译,表格将进行排序,但如果使用Qt5.3.1编译,模型将进行排序(使用qDebug语句验证),但TableView不会更新。这在Windows和Linux上都会发生 为了解决这个问题,我必须在调用此->sort()之后添加emit layoutChanged() 我的问题是,是否有其他人

最近,我从Qt5.3.0升级到Qt5.3.1,注意到我的TableView在对代理模型排序时不再更新,它使用QSortFilterProxy模型作为模型

您可以通过使用示例代码看到这一点

如果使用Qt5.3.0编译,表格将进行排序,但如果使用Qt5.3.1编译,模型将进行排序(使用qDebug语句验证),但TableView不会更新。这在Windows和Linux上都会发生

为了解决这个问题,我必须在调用此->sort()之后添加emit layoutChanged()

我的问题是,是否有其他人注意到了这一点,并发现这是出于设计还是缺陷


谢谢

我做了一些进一步的挖掘,发现了一个Qt错误,正是针对这个问题

在Qt5.3.1中,解决了另一个错误,它将QQMLDelegateModel更改为发出layoutChanged(QList,QAbstractItemModel::LayoutChangedHint),而不是简单地发出layoutChanged()。TableView似乎没有监听layoutChanged()信号的参数化版本,这就是为什么我可以通过在调用sort()后手动发出layoutChanged()来解决这个问题

这显然已由Qt 5.3.2中的QTBUG-39492修复