我上课,说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中。
答案 0 :(得分:0)
(根据问题澄清编辑)
为什么需要将源模型传递到QSqlRelationalDelegate
?如果您使用股票委托,那么委托需要在其可视化的数据之上运行(来自TransposeProxyModel
的数据)。
如果您有QSqlRelationalDelegate
的自定义子类,并且您想要出于任何原因从那里访问源数据,那么您可以将myObject
作为第二个参数传递给委托构造函数,或者您可以访问它通过QModelIndex::model()
传递给委托方法的index
方法。