【问题标题】:two qtableviews, two models and the same data两个 qtableviews,两个模型和相同的数据
【发布时间】:2019-10-04 21:20:39
【问题描述】:

我有

  • 一个向量A
  • 两个 QTableModel:a 和 b
  • 还有两个QTableView:c和d

a是c的模型,b是d的模型

这两个模型以两种不同的方式呈现相同的数据 (A)。 问题是,当我从视图 b 使用模型 a 编辑数据时;视图 d 不会更改数据(不会“更新视图”),直到我单击它(当它设置焦点时)。 我在 a 和 b 中的每个 setData 函数中发出 dataChanged。 最后我尝试连接数据变化信号:

QObject::connect(a, SIGNAL(dataChanged(QModelIndex,QModelIndex)), b, SIGNAL(dataChanged(QModelIndex,QModelIndex)));

这并不能解决问题。

【问题讨论】:

  • 不能在两个视图之间共享一个模型吗?
  • 我需要 data() 函数的两种不同行为。不,我不能,我需要两个使用相同数据向量的模型
  • @Francesco 哦,请考虑不要那样使用模型!也许我没有得到任何东西,但它不符合您的需要有 1 个模型,包含数据和 QAbstractProxyModel 的两个后代,与之连接?这些后代可以覆盖他们的data()。尽管这是一种可能的方法,但这可能会让您免受黑客信号的影响。
  • 太棒了!我只是从 qitemproxymodel 中导出了第二个模型并稍微编辑了它!非常感谢

标签: c++ qt


【解决方案1】:

QTableModel dataChanged被定义为Signal,而不是slot,所以不能将signal连接到signal....

因此这是无效的

QObject::connect(a, SIGNAL(dataChanged(QModelIndex,QModelIndex)), b, SIGNAL(dataChanged(QModelIndex,QModelIndex)));

而且不会工作

【讨论】:

  • 信号可以连接到另一个信号
猜你喜欢
  • 2016-11-10
  • 1970-01-01
  • 1970-01-01
  • 2019-09-13
  • 2018-07-11
  • 2019-11-24
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
相关资源
最近更新 更多