當(dāng)你使用QStandardItemModel(model)與QTableView顯示數(shù)據(jù)時(shí), 如果數(shù)據(jù)量比較大, 如幾千上萬條, 每次給model填充數(shù)據(jù)時(shí), 只是使用model->clear()來清空數(shù)據(jù), 然后再填充, 速度會(huì)非常的慢. 但如果是使用delete model; model = new QStandardItemModel()顯示的刪除model, 然后再創(chuàng)建一個(gè)model, 這樣顯示速度會(huì)非常的快, 不知何故.
例子:
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QStandardItemModel *model = new QStandardItemModel();
QTableView *table = new QTableView();
// 如果事先給 table設(shè)置了 model而不預(yù)指定好要存儲(chǔ)的數(shù)據(jù)的行數(shù),則會(huì)非常慢
// 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"));
}