【发布时间】:2013-10-29 08:41:28
【问题描述】:
我有 SourceTable(QAbstractTableModel 类型)的模型,应该通过 QSortFilterProxyModel 表示,它是 GUI api 的一部分。
其中一列是复选框,应该代表行的状态,但它也应该用于触发状态更改:
unchecked ---check---> checked
在检查操作时,我必须向服务器发送消息。然后,服务器通过 SourceTable (QAbstractTableModel) 将此检查信息发送回。然后应锁定检查以供用户干预。
------------- --------------- signal ----------------------- -------
|SourceTable|---//--->|newProxyModel| <---------- |GUI sort/filter proxy|---|TView|
------------- --------------- ----------> ----------------------- -------
^ |
-----message to server----
我应该以某种方式从 newProxyModel 获取/设置/提升 GUI 中数据更改的信号。 这就是为什么应该在 newProxy 中“覆盖”“复选框”列。
由于使用装饰器破坏了架构,我正在考虑插入另一个代理模型来管理此列的行为。这条路好走吗?
我想知道这是否可行,以及从 GUI 模型 (QSortFilterProxyModel) 和服务器 SourceTable (QAbstractTableModel) 拦截用户活动的简单/正确方法是什么
由于我是 Qt 模型/视图的新手,因此感谢任何建议和示例。 我可能完全错了。
谢谢。
【问题讨论】:
-
不清楚你在这里问什么
-
@urkon 你想在每一行的复选框被切换时调用一个特定的函数吗?
-
@AngryDuck 我已经更新了案例。
-
@Zaiborg 是的。我想在切换时调用一些函数。但不是直接在按钮上,而是在模型值更改上。如果可行的话。通常我会使用单击按钮,但在这种情况下,我将不得不更改其他代码。
标签: c++ qt model-view-controller model