当前位置: 代码迷 >> QT开发 >> tableView数据展示
  详细解决方案

tableView数据展示

热度:97   发布时间:2016-04-25 04:20:19.0
tableView数据显示
现在有一批数据,间隔几秒钟会显示在tableView中,显示的数据默认是从上往下显示的,也就是最新显示的数据一直在最下面一行的,现在我想改成让最新显示的数据放在第一行,应该怎么弄的,找了半天没找到,知道是说下,谢谢!!
------最佳解决方案--------------------
遇到类似的问题,可以交流下么
------其他解决方案--------------------
其实可以自己写算法来排序。
反正Model里面的数据都是你自己的。
变了以后 emit dadaChanged(QModelIndex...)这个信号。 view就会自动更新了。 
------其他解决方案--------------------
我也是从串口采的数据,通过CAN模块,把采来的数据显示在不同的界面,当两个有数据的界面切换时会出现段错误,但是加个延时就可以正常切换,这样会降低刷新数据的速度,请问你知道有别的解决办法不
------其他解决方案--------------------
你数据从新排下!
------其他解决方案--------------------
你数据是怎么来的?  数据库读取?
------其他解决方案--------------------
怎么排啊/
------其他解决方案--------------------
已经搞定了,谢谢!!
我的数据是从串口读出来的,每个200毫秒就能读取一次数据,读到的数据添加到tabview中,


void Config::UpdataTabview(unsigned int lines, QString hex)
{
    QString str = QString::number(lines);
    
    //添加数据之前排序
    tableModel->sort(0,Qt::AscendingOrder);
    
    //添加数据
    tableModel->setItem(lines, 0, new QStandardItem(str));
    tableModel->setItem(lines, 1, new QStandardItem(CurTime->currentDateTime().toString("yyyy-MM-dd hh:mm:ss")));
    tableModel->setItem(lines, 3, new QStandardItem(hex.toUpper()));
    
    //添加数据后排序
    tableModel->sort(0,Qt::AscendingOrder);
}




用上面的代码实现了。当然在tabview的UI初始化的时候要加上一句 tableModel->setSortRole(1);

这样就可以实现最新的数据添加在第一行
------其他解决方案--------------------
引用:
遇到类似的问题,可以交流下么



我后来用上面排序的方法弄的,但是数据很多的时候比如表里有上千条数据的时候,排队就变的很慢,而且能看见排队的过程,表里边的数据项会跳。后来没采用这种方法,直接把滚动条显示在最下面。。
  相关解决方案