• 7601阅读
  • 7回复

如何使tableView和model保存同步 [复制链接]

上一主题 下一主题
离线y383564500
 
只看楼主 倒序阅读 楼主  发表于: 2009-08-04
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —

我使用了一个QTableView,并使用setModel给它指定了一个model,现在的情况是,如果我修改了model中的数据,QTableView并不同步更新,只有当拖动QTableView时,QTableView重画才会更新,我已经试了调用 update(),show(),但都不更新,我现在的方法是重新设置一个model,但问题又来了,以前保存的QItemSelectionModel 的指针也不能用了,只能重新获得,请问应该怎么做,才能使它们同步更新,谢谢!
离线bingogo
只看该作者 1楼 发表于: 2009-08-04
治标的方法

试试 hide( ) 然后 show( )

有一次我遇到个问题也是 update show 都用了,都没用……
离线bingogo
只看该作者 2楼 发表于: 2009-08-04
或者
emit dataChanged();
离线y383564500
只看该作者 3楼 发表于: 2009-08-04
找到原因了,那个int rowCount(const QModelIndex &parent = QModelIndex()) const;重载时,动态的给值没有起作用,于是我固定的开了100个大小,这样就起作用了。但我现在还不知道怎么能够动态的给定model的行大小
离线robertkun

只看该作者 4楼 发表于: 2009-08-06
引用第2楼bingogo于2009-08-04 17:44发表的  :
或者
emit dataChanged();


dataChange() 貌似只有在改变以后,当你敲下回车,或触发itemChange() 消息时才会触发,
这样也就不是同步更新了。

我也遇到这样的问题,还找不到合适的方法,就只能用一个paint()函数,来实时的更新了。
很恶,希望高手指点。。。
                                              简单的生活使人快乐!
离线wangqizero
只看该作者 5楼 发表于: 2009-08-06
viewport()->repaint()
重绘整个Viewport()区域。当然这样做效率不大好,也可以repaint(rect)。rect是你修改的值的区域
离线babybluema

只看该作者 6楼 发表于: 2010-04-25
reset()
离线wangweiqi23
只看该作者 7楼 发表于: 2011-08-09
能不能从model类里弄点信号就好啦  期待大侠。。。
快速回复
限100 字节
 
上一个 下一个