Qt代理与源对象的类型

时间:2015-02-25 13:26:07

标签: qt proxy qt5

我上课,说MyClass,继承自QSqlRelationalTableModel,我需要转置它(用列更改行)。 找到This解决方案。 使用代理后,是否可以获得{em}转换的MyClass 对象?如果没有,还有其他方法吗?

谢谢!

修改 我想用的是这样的:

MyClass* myObject = new MyClass(this, db);
TransposeProxyModel* trans = new TransposeProxyModel(this);
trans->setSourceModel(myObject);
ui->tableViewDb->setModel(trans);
ui->tableViewDb->setItemDelegate(new QSqlRelationalDelegate(ui->tableViewDb));

必须将MyClass(或QSqlRelationalTableModel)的对象粘贴到QSqlRelationalDelegate中。

1 个答案:

答案 0 :(得分:0)

(根据问题澄清编辑)

为什么需要将源模型传递到QSqlRelationalDelegate?如果您使用股票委托,那么委托需要在其可视化的数据之上运行(来自TransposeProxyModel的数据)。

如果您有QSqlRelationalDelegate的自定义子类,并且您想要出于任何原因从那里访问源数据,那么您可以将myObject作为第二个参数传递给委托构造函数,或者您可以访问它通过QModelIndex::model()传递给委托方法的index方法。