自定义模型SearchModel ------ Model-View-Control(MVC)架构(9)

昨天在digia上看了篇文章,以为用2步分布添加的方法可以解决这个问题,但尝试下来还是失败。不知道原因何在。

暂时先在这里占个位,然后继续研究,等解决了这个问题再来发布解决方法。

另外新建了一个测试工程,发现问题根本不是出在往模型里添加数据的环节,而是不知道什么缘故导致的委托方面的问题。用自定义委托来绘制条目的话,则会出现行高的问题,但检查了委托的代码,也未发现问题所在。不过现在想到了一个解决问题的方法,就是在模型里,每当添加新行成功后,即将刚刚添加的新行的行高重新设置一遍,这样显示上就没问题了。先这样吧,以后有时间再深究有没有其他的解决办法。

现在从模型里删除了inserRows重载方法,也删除了setData重载方法,仅仅保留一个自定义的槽函数,供视图接收到服务器数据后调用来动态向数据模型添加数据。此槽函数代码如下:

SearchModel.cpp

//供SearchFriends.cpp函数调用,用以向数据模型里添加一行数据
void SearchModel::slot_InsertRow(QList<SearchItem *> newRow)
{
    beginInsertRows(QModelIndex(),
                    list.count(),
                    list.count());
    list.append(newRow);
    endInsertRows();

    //修改TableView里最新一行的行高,否则会叠加显示到一起
    tableView->setRowHeight(list.count()-1,70);
}
现在运行客户端,点击Search按钮,向服务器提交搜索请求,之后就会收到服务器回传的数据,动态添加数据到模型并及时显示到视图里。效果如下:


现在图标之间不会再叠加在一起了。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值