现在有一批数据,间隔几秒钟会显示在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);
这样就可以实现最新的数据添加在第一行
------其他解决方案--------------------
我后来用上面排序的方法弄的,但是数据很多的时候比如表里有上千条数据的时候,排队就变的很慢,而且能看见排队的过程,表里边的数据项会跳。后来没采用这种方法,直接把滚动条显示在最下面。。