【问题标题】:Is there a way to Convert QTableView model to QStandardItemModel有没有办法将 QTableView 模型转换为 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&lt;QStandardItemModel *&gt;(tblView-&gt;model());
  • @eyllanesc 谢谢老兄,它有效。 qobject_cast&lt;&gt;(); 是什么?
  • @eyllanesc 嗨,如果您想将您的评论写为答案。我非常乐意将其标记为已接受。

标签: c++ qt qt5 qtableview qstandarditemmodel


【解决方案1】:

如果该模型与QStandardItemModel 不同,那么您必须创建自己的clear() 方法,以便您提供该模型的代码。另一方面,如果是QStandardItemModel,则必须强制转换:

model = qobject_cas<QStandardItemModel *>(tblView->model());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2014-11-06
    • 2017-03-25
    • 2021-09-01
    相关资源
    最近更新 更多