View与Model绑定注意事项 (视图无数据显示)

 

Qt 中视图与模型绑定时,模型必须使用new来创建。否则刚开始初始化的时候,视图无数据显示,或者后期视图不能随着模型的改变而改变

 

具体原因:我猜测是局部变量生命周期的问题。new 的变量在堆中,除非手动释放,否则一直存在。如果不new一个Model,把Model变量放在类成员变量中,视图就可以正常显示数据了。

 

Eorror错误的写法

 

Cpp代码   收藏代码
  1. QStandardItemModel model(4,2);    
  2.     
  3.     
  4. model.setHeaderData(0, Qt::Horizontal, tr("Label"));    
  5. model.setHeaderData(1, Qt::Horizontal, tr("Quantity"));    
  6.     
  7.     
  8. ui.tableView->setModel(&model);    
  9.     
  10. for (int row = 0; row < 4; ++row) {    
  11.     for (int column = 0; column < 2; ++column) {    
  12.         QModelIndex index = model.index(row, column, QModelIndex());    
  13.         model.setData(index, QVariant((row+1) * (column+1)));    
  14.     }    
  15. }    
  16.      

 

Right 正确的写法

 

Cpp代码   收藏代码
  1. QStandardItemModel *model;    
  2.     
  3. model = new QStandardItemModel(4,2);    
  4. ui.tableView->setModel(model);    
  5.     
  6. model->setHeaderData(0, Qt::Horizontal, tr("Label"));    
  7. model->setHeaderData(1, Qt::Horizontal, tr("Quantity"));    
  8.     
  9. for (int row = 0; row < 4; ++row) {    
  10.     for (int column = 0; column < 2; ++column) {    
  11.         QModelIndex index = model->index(row, column, QModelIndex());    
  12.         model->setData(index, QVariant((row+1) * (column+1)));    
  13.     }    
  14. }    

 

分享到:   
 

转载于:https://www.cnblogs.com/lvdongjie/p/3757522.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值