QTableView 刷新相关 您所在的位置:网站首页 iOS异步线程数据刷新tableview导致越界 QTableView 刷新相关

QTableView 刷新相关

2024-07-16 05:56| 来源: 网络整理| 查看: 265

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

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

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

    2 使用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 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 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"));  }    // 如果你是先把数据加载到model中的,那么事先不指定要存储的行数。  // 先把数据存储到model中 ,然后再给table设置model,这样也会很快 .  table->setModel(model); /// [[2]]    table->show();    return app.exec();  }  

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

程序中需要显示的时候,

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


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有