如何在Tabview Qt中设置新项目并保存之前的项目

时间:2018-11-03 17:19:25

标签: c++ qt

当我使用Qt tableView时,我可以在第一行中设置项目。当我单击add时,它将覆盖前者,但不会设置新项。也许我的插槽功能不正确。但是我不知道如何处理。

void Widget::on_addButton_clicked()
{   int i = 0;
    EditDialog editDialog(this);
    if(editDialog.exec() == 1)
    {
        model->setItem(i,0,new QStandardItem(editDialog.getID()));
        model->setItem(i,1,new QStandardItem(editDialog.getPriority()));
        model->setItem(i,2,new QStandardItem(editDialog.getTime()));
    }
    i++;
}

1 个答案:

答案 0 :(得分:1)

请查看文档。 QStandardItemModel::setItem()

  

将给定行和列的项目设置为item。模型获取项目的所有权。如有必要,增加行数和列数以适合该项目。 在给定位置(如果有)的上一项被删除。

(强调是我的。)

如果要在表格末尾之前插入一行(例如,首先插入一行),则必须明确地执行此操作。

这可以通过在设置项目之前调用QStandardItemModel::insertRow()来实现。

例如看起来像这样:

point

我是从我的一个较早的职位上摘下来的。完整的示例可以在我对SO: Stop QTableView from scrolling as data is added above current position的回答中找到。