如何在选项卡视图Qt中设置一个新项目,并保存以前的项目

How to set a new item in tabview Qt, and save the previous ones

本文关键字:新项目 一个 保存 项目 选项 视图 Qt 设置      更新时间:2023-10-16

当我使用QttableView时,我只能在第一行设置项。当我单击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++;
}

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

将给定行和列的项设置为项。模型取得项目的所有权。如有必要,会增加行数和列数以适应项目指定位置的上一个项目(如果有(将被删除

(强调是我的。(

如果一行应插入表末尾之前(例如,作为第一行(,则有必要明确执行此操作。

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

这可能看起来像这样:

// fills a table model with sample data
void populate(QStandardItemModel &tblModel, bool prepend)
{
int row = tblModel.rowCount();
if (prepend) tblModel.insertRow(0);
for (int col = 0; col < NCols; ++col) {
QStandardItem *pItem = new QStandardItem(QString("row %0, col %1").arg(row).arg(col));
tblModel.setItem(prepend ? 0 : row, col, pItem);
}
}

这是我以前的一个职位上的。完整的示例可以在我对SO的回答中找到:当数据添加到当前位置上方时,停止QTableView滚动。