当我使用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++;
}
答案 0 :(得分:1)
请查看文档。 QStandardItemModel::setItem()
:
将给定行和列的项目设置为item。模型获取项目的所有权。如有必要,增加行数和列数以适合该项目。 在给定位置(如果有)的上一项被删除。
(强调是我的。)
如果要在表格末尾之前插入一行(例如,首先插入一行),则必须明确地执行此操作。
这可以通过在设置项目之前调用QStandardItemModel::insertRow()
来实现。
例如看起来像这样:
point
我是从我的一个较早的职位上摘下来的。完整的示例可以在我对SO: Stop QTableView from scrolling as data is added above current position的回答中找到。