QTableView 刷新相关

1 QTableView如何清空数据保留表头?

tableview->clear(); //连表头也会被删除

tableview->removeRow(); //就必须知道表中有多少行数据  如何获取表中数据行数?


    使用QStandardItemModel的QTableView,添加大量数据解决刷新卡顿问题

添加数据前:

TableView->setUpdatesEnabled(false);  //暂停界面刷新
添加大量数据过程。。。。

添加完毕后:

TableView->setUpdatesEnabled(true);  //恢复界面刷新

即可,或者继承QAbstractItemModel来覆写inserrows函数。


m_itemmodel = new QStandardItemModel(this);
ui.tableView->setModel(m_itemmodel);

你要清空这样写就可以:
m_itemmodel->removeRow(0, m_itemmodel->rowCount());

用QTableView+QStandardItemModel来代替QTableWidget.

用这个  model->removeRows(0, model->rowCount());


ui->tableView->reset();
ui->tableView->setModel(m_Model);     //这样就ok了

添加数据的时候要调用beginInsertRows()/endInsertRows(),删减数据的时候要调用beginRemoveRows()/endRemoveRows(),或者干脆调用reset(),不过reset()的副作用是连用户的焦点、选择都丢掉,最好别用。

goodsModel->appendRow(items); 

[cpp]  view plain  copy
  1. int main(int argc, char *argv[]) {  
  2. QApplication app(argc, argv);  
  3.   
  4. QStandardItemModel *model = new QStandardItemModel();  
  5. QTableView *table = new QTableView();  
  6.   
  7. // 如果事先给 table设置了 model而不预指定好要存储的数据的行数,则会非常慢  
  8. // table->setModel(model); /// [[1]]  
  9. // model->setRowCount(1000); /// [[1]]  
  10.   
  11. model->setColumnCount(14);  
  12.   
  13. for (int i = 0; i < 1000; ++i) {  
  14. model->setItem(i, 0, new QStandardItem("1"));  
  15. model->setItem(i, 1, new QStandardItem("2"));  
  16. model->setItem(i, 2, new QStandardItem("3"));  
  17. model->setItem(i, 3, new QStandardItem("4"));  
  18. model->setItem(i, 4, new QStandardItem("5"));  
  19. model->setItem(i, 5, new QStandardItem("6"));  
  20. model->setItem(i, 6, new QStandardItem("7"));  
  21. model->setItem(i, 7, new QStandardItem("8"));  
  22. model->setItem(i, 8, new QStandardItem("9"));  
  23. model->setItem(i, 9, new QStandardItem("10"));  
  24. model->setItem(i, 10, new QStandardItem("11"));  
  25. model->setItem(i, 11, new QStandardItem("12"));  
  26. model->setItem(i, 12, new QStandardItem("13"));  
  27. model->setItem(i, 13, new QStandardItem("14"));  
  28. }  
  29.   
  30. // 如果你是先把数据加载到model中的,那么事先不指定要存储的行数。  
  31. // 先把数据存储到model中 ,然后再给table设置model,这样也会很快 .  
  32. table->setModel(model); /// [[2]]  
  33.   
  34. table->show();  
  35.   
  36. return app.exec();  
  37. }  



界面上的QTableView取名为tbList,与tbList关联的Model取名为tb1

程序中需要显示的时候,

  1. tbList->setModel(NULL);  //清除原先数据集
  2. tbList->setModel(tb1);  //刷新显示

你可能感兴趣的:(qt,编程)