QAbstractItemModel -- 正在重置?QItemDelegate::p aint() 被调用太频繁了



这让我发疯了。 我有一个QAbstractItemModel,QSortFilterProxyModel和一个QStyledItemDelegate。 所有这些都是子类。 发出以下 dataChanged() 后,应该只为这两个索引(0,0 和 0,1)调用 QStyledItemDelegate::p aint()。 但是,我已经确认它被调用用于所有可见单元格。

void my_model_t::emit_data_changed()
{
    QModelIndex start_ix    = createIndex( 0, 0 );
    QModelIndex end_ix  = createIndex( 0, 1 );
    emit( dataChanged( start_ix, end_ix ) );
}

可以肯定的是,我已经将一个插槽连接到我的模型和代理的modelReset()和layoutChanged()信号。 它做一个简单的printf()。 但是,它永远不会被调用。 我很确定我对视图或委托没有任何时髦的事情。 但是,也不确定去哪里看。

来自Qt论坛的双篇文章:

我稍微挖掘了一下调用堆栈,并开始捕获更多插槽。 我正在捕捉我的QTableView的dataChanged()和paintEvent()的。 基本上QTableView::d ataChanged()正在修改坐标。

它的行为显然符合预期。 如果你问我,绝对可耻的文档。 QAbstractItemModel::d ataChanged() 信号和 QAbstractItemView::d ataChanged() 插槽中缺少一个巨大的星号。

希望没有其他人有这个问题,如果他们有,他们可以找到这个线程。

http://qt-project.org/forums/viewthread/14723

相关内容

  • 没有找到相关文章

最新更新