【问题标题】:How to inform the model/view that underlying data changed table headers?如何通知模型/视图底层数据更改了表头?
【发布时间】:2015-04-29 14:23:56
【问题描述】:

我刚刚基于QAbstractTableModel构造了一个读写TableModel。有效,但底层数据可以更改列和行的标题,我不知道如何通知模型和视图(以便视图刷新标题)。

如果我更改垂直标题(在数据中)然后插入一列(通过视图->模型),则标题正在更新。我以某种特殊方式使用beginInsertingX 来强制更新?

【问题讨论】:

  • 当数据改变时发送一个信号并在你的 TableModel 的一个槽中拾取它?
  • 好的。我的问题不清楚 - 我会编辑它。

标签: c++ qt model-view-controller qabstracttablemodel


【解决方案1】:

我认为您应该在开始编辑模型基础数据之前调用 beginInserColumns() 并在完成编辑后调用 endInsertColumns()。

模型应自动提醒所有可见视图需要重新绘制数据。 如果您调用 beginResetModel() 和 endResetModel() 进行彻底的更改,它会更快

【讨论】:

  • beginInsertColumns(...) 总是强制视图插入列。 ;-) 我想如果我使用一些特殊的论点,可以避免,但不是。 - 如果我使用的开头大于结尾,则应用程序崩溃。 更改标题的唯一方法是使用beginResetModel()endResetModel()
猜你喜欢
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-02
  • 2011-11-02
相关资源
最近更新 更多