有没有办法将 QTableView 模型转换为 QStandardItemModel
Posted
技术标签:
【中文标题】有没有办法将 QTableView 模型转换为 QStandardItemModel【英文标题】:Is there a way to Convert QTableView model to QStandardItemModel 【发布时间】:2018-02-23 22:45:37 【问题描述】:如您所知,QTableView->model()
返回QAbstractItemModel
。有没有办法用QTableView->model()
填充QStandardItemModel
的实例?或将QAbstractItemModel
转换为QStandardItemModel
?我需要一些QStandardItemModel
方法,例如clear()
,而QAbstractItemModel
中没有这样的东西。
QStandardItemModel *model = new QStandardItemModel();
model = tblView->model();
error: invalid conversion from ‘QAbstractItemModel*’ to ‘QStandardItemModel*’ [-fpermissive]
对于创建表,我使用以下代码:
QStandardItemModel *model = new QStandardItemModel(0, 3, this);
for (int = 0; i < 100; i++)
model->setRowCount(model->rowCount() + 1);
model->setData(model->index(i, 0), "...");
model->setData(model->index(i, 1), "...");
model->setData(model->index(i, 2), "...");
tblView->model() = model;
【问题讨论】:
你为QTableView建立了什么模型?如果该模型与 QStandardItemModel 不同,那么您必须创建自己的 clear() 方法,以便提供该模型的代码。另一方面,如果它是一个 QStandardItemModel 你必须转换它:model = qobject_cas<QStandardItemModel *>(tblView->model());
@eyllanesc 谢谢老兄,它有效。 qobject_cast<>();
是什么?
doc.qt.io/qt-5/qobject.html#qobject_cast
@eyllanesc 嗨,如果您想将您的评论写为答案。我非常乐意将其标记为已接受。
【参考方案1】:
如果该模型与QStandardItemModel
不同,那么您必须创建自己的clear()
方法,以便您提供该模型的代码。另一方面,如果是QStandardItemModel
,则必须强制转换:
model = qobject_cas<QStandardItemModel *>(tblView->model());
【讨论】:
以上是关于有没有办法将 QTableView 模型转换为 QStandardItemModel的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法将 Django 模型查询集转换为模板中的 json 或 json 字符串?