【问题标题】:Qt 5.3.1 TableView not updatingQt 5.3.1 TableView 未更新
【发布时间】:2014-08-13 13:33:22
【问题描述】:

最近我从 Qt 5.3.0 升级到 Qt 5.3.1,并注意到当我对代理模型进行排序时,使用 QSortFilterProxyModel 作为其模型的 TableView 不再更新。

您可以使用示例代码here!

如果您使用 Qt 5.3.0 编译它,表格将排序,但如果您使用 Qt 5.3.1 编译它,模型将排序(使用 qDebug 语句验证)但 TableView 不会更新。这在 Windows 和 Linux 上都会发生。

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

我的问题是有没有其他人注意到这一点并发现这是设计使然还是缺陷。

谢谢

【问题讨论】:

    标签: qt tableview qml qt-quick


    【解决方案1】:

    我做了更多的挖掘工作,发现了一个针对这个问题的 Qt 错误。 QTBUG-40035 TableView, Sort doesn't work.

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

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

    【讨论】:

      猜你喜欢
      • 2012-12-02
      • 1970-01-01
      • 2018-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多