当你使用QStandardItemModel(model)与QTableView显示数据时, 如果数据量比较大, 如几千上万条, 每次给model填充数据时, 只是使用model->clear()来清空数据, 然后再填充, 速度会非常的慢. 但如果是使用delete model; model = new QStandardItemModel()显示的删除model, 然后再创建一个model, 这样显示速度会非常的快, 不知何故.
例子:
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QStandardItemModel *model = new QStandardItemModel();
QTableView *table = new QTableView();
// 如果事先给 table设置了 model而不预指定好要存储的数据的行数,则会非常慢
// table->setModel(model); /// [[1]]
// model->setRowCount(1000); /// [[1]]
model->setColumnCount(14);
for (int i = 0; i < 1000; ++i) {
model->setItem(i, 0, new QStandardItem("1"));
model->setItem(i, 1, new QStandardItem("2"));
model->setItem(i, 2, new QStandardItem("3"));
model->setItem(i, 3, new QStandardItem("4"));
model->setItem(i, 4, new QStandardItem("5"));
model->setItem(i, 5, new QStandardItem("6"));
model->setItem(i, 6, new QStandardItem("7"));
model->setItem(i, 7, new QStandardItem("8"));
model->setItem(i, 8, new QStandardItem("9"));
model->setItem(i, 9, new QStandardItem("10"));
model->setItem(i, 10, new QStandardItem("11"));
model->setItem(i, 11, new QStandardItem("12"));
model->setItem(i, 12, new QStandardItem("13"));
model->setItem(i, 13, new QStandardItem("14"));
}