zoukankan      html  css  js  c++  java
  • 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. }    
    分享到:  
     
  • 相关阅读:
    WinCMD color命令
    WinCMD if命令(批处理Dos 大于、小于、等于)
    WinCMD 常用命令
    AIFramework基本概念整理
    AICompiler动态shape编译框架
    深度学习编译与优化Deep Learning Compiler and Optimizer
    NNVM Compiler,AI框架的开放式编译器
    Tengine AIFramework框架
    Tvm一些基本技术
    北汽蓝谷和北汽新能源
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/3757522.html
Copyright © 2011-2022 走看看