tableView数据显示

zheguzai000 2012-09-26 04:54:53
现在有一批数据,间隔几秒钟会显示在tableView中,显示的数据默认是从上往下显示的,也就是最新显示的数据一直在最下面一行的,现在我想改成让最新显示的数据放在第一行,应该怎么弄的,找了半天没找到,知道是说下,谢谢!!
...全文
293 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
飘飘崽16 2013-05-09
  • 打赏
  • 举报
回复
如何表中的数据有很多条,比如上前条的话,刷新的时候,向下拖动,为了看更多的数据的时候,发现拖动的时候,它刷新后会回去显示最前面的记录。有没有方法让拖动并刷新的同时不会回到最前面去显示。求解!!!
xhy2009ok 2012-11-13
  • 打赏
  • 举报
回复
我也是从串口采的数据,通过CAN模块,把采来的数据显示在不同的界面,当两个有数据的界面切换时会出现段错误,但是加个延时就可以正常切换,这样会降低刷新数据的速度,请问你知道有别的解决办法不
zheguzai000 2012-11-12
  • 打赏
  • 举报
回复
引用 5 楼 xhy2009ok 的回复:
遇到类似的问题,可以交流下么
我后来用上面排序的方法弄的,但是数据很多的时候比如表里有上千条数据的时候,排队就变的很慢,而且能看见排队的过程,表里边的数据项会跳。后来没采用这种方法,直接把滚动条显示在最下面。。
  • 打赏
  • 举报
回复
其实可以自己写算法来排序。 反正Model里面的数据都是你自己的。 变了以后 emit dadaChanged(QModelIndex...)这个信号。 view就会自动更新了。
xhy2009ok 2012-11-06
  • 打赏
  • 举报
回复
遇到类似的问题,可以交流下么
zheguzai000 2012-09-27
  • 打赏
  • 举报
回复
已经搞定了,谢谢!!
我的数据是从串口读出来的,每个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);

这样就可以实现最新的数据添加在第一行
SilenceSu 2012-09-26
  • 打赏
  • 举报
回复
你数据是怎么来的? 数据库读取?
zheguzai000 2012-09-26
  • 打赏
  • 举报
回复
怎么排啊/
SilenceSu 2012-09-26
  • 打赏
  • 举报
回复
你数据从新排下!

16,239

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧