具有源对象类型的 Qt 代理
Qt Proxy with type of source object
我有 class,比如 MyClass
,继承自 QSqlRelationalTableModel
,我需要转置它(用列更改行)。
This 已找到解决方案。
使用代理后是否可以得到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 中。
(根据问题澄清进行编辑)
为什么需要将源模型传递到 QSqlRelationalDelegate
?如果您使用 stock 委托,则该委托需要在其可视化的数据之上进行操作(来自 TransposeProxyModel
的数据)。
如果您有 QSqlRelationalDelegate
的自定义子类并且出于任何原因想要从那里访问源数据,那么您可以将 myObject
作为第二个参数传递给委托构造函数,或者您可以通过传递给委托方法的 index
的 QModelIndex::model()
方法访问它。
我有 class,比如 MyClass
,继承自 QSqlRelationalTableModel
,我需要转置它(用列更改行)。
This 已找到解决方案。
使用代理后是否可以得到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 中。
(根据问题澄清进行编辑)
为什么需要将源模型传递到 QSqlRelationalDelegate
?如果您使用 stock 委托,则该委托需要在其可视化的数据之上进行操作(来自 TransposeProxyModel
的数据)。
如果您有 QSqlRelationalDelegate
的自定义子类并且出于任何原因想要从那里访问源数据,那么您可以将 myObject
作为第二个参数传递给委托构造函数,或者您可以通过传递给委托方法的 index
的 QModelIndex::model()
方法访问它。