更新QTableView

3
QTableView *tableView = new QTableView();
QStandardItemModel *model = new QStandardItemModel(15,4, this);
tableView->setModel(model);

model->setHorizontalHeaderItem(0, new QStandardItem("#") );
model->setHorizontalHeaderItem(1, new QStandardItem("col1") );
model->setHorizontalHeaderItem(2, new QStandardItem("col2") );

// update tableView

model->removeRows(0,model->rowCount());

QList<QStandardItem*> row1;
row1 << new QStandardItem("element 01") << new QStandardItem("element 02") << new QStandardItem("element 03");
model->appendRow( row1 );

QList<QStandardItem*> row2;
row2 << new QStandardItem("element 04") << new QStandardItem("element 05") << new QStandardItem("element 06");
model->appendRow( row2 );

tableView将经常更新(所有内容都将被删除并替换)。

如何以最快的方式(代码行数最少)更新此QTableView,可能使用一些数据结构,并使用QStandardItemModel方法直接处理此结构?

类似于:

model->setNewData( theNewData );
1个回答

1
不需要删除行并添加新行。您可以像这样仅更新当前项目的值:
model->item(0, 0)->setData("element 01",Qt::DisplayRole);
model->item(0, 1)->setData("element 02",Qt::DisplayRole);
model->item(0, 2)->setData("element 03",Qt::DisplayRole);

model->item(1, 0)->setData("element 04",Qt::DisplayRole);
model->item(1, 1)->setData("element 05",Qt::DisplayRole);
model->item(1, 2)->setData("element 06",Qt::DisplayRole);

当我尝试这个时,我遇到了错误:C2039:'item':不是 'QSqlTableModel' 的成员。可能出了什么问题? - Thomas Williams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接