QTableWidget继承自QTableView。QSqlTableModel能与QTableView绑定,但不能于QTableWidget绑定。

QSqlTableModel *model = new QSqlTableModel;
model->setTable("employee");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->removeColumn(0); // don't show the ID
model->setHeaderData(0, Qt::Horizontal, tr("Name"));
model->setHeaderData(1, Qt::Horizontal, tr("Salary"));

QTableView *view = new QTableView;
view->setModel(model);
view->show();

模型视图结构

Qt4中引入了模型/视图框架来完成数据与表现的分离,这在Qt4中称为InterView框架。

 

MVC设计模式是起源于Smalltalk的一种与用户界面相关的设计模式。MVC包括三个元素:模型(Model)表示数据,视图(View)是用户界面,控制(Controler)定义了用户在界面上的操作。通过使用MVC模式,有效的分离了数据和用户界面,使得设计更为灵活,更能适应变化。

模型:所有的模型都基于QAbstractItemModel类,该类是抽象基类。

视图:所有的视图都从抽象基类QAbstractItemView继承。

 

Interview框架提供了一些常见的模型类和视图类,例如QStandardItemModel,QDirModel,QStringListModel和QColumnView,QHeaderView,QListView,QTableView,QTreeView。

 

相对于使用现有的模型和视图,Qt还提供了更为便捷的类来处理常见的一些数据模型。他们将模型和视图合一,便于处理一些常规的数据类型。使用这些类型虽然简单方便,但也失去了模型视图结构的灵活性,所以要根据具体情况来选择。

 

 

具体区别表格

区别点

QTableView QTableWidget
继承关系   QTableWidget继承自QTableView
使用数据模型setModel 可以使用setModel设置数据模型 setModel是私有函数,不难使用该函数设置数据模型
显示复选框setCheckState 没有函数实现复选框 QTableWidgetItem类中的setCheckState(Qt::Checked);可以设置复选框
与QSqlTableModel绑定 QTableView能与QSqlTableModel绑定 QTableWidget能与QSqlTableModel绑定
     
     

View与Model绑定注意事项

但视图与模型绑定时,模型必须使用new来创建。否则视图不能随着模型的改变而改变。

Eorror错误的写法

QStandardItemModel model(4,2);

model.setHeaderData(0, Qt::Horizontal, tr("Label"));
model.setHeaderData(1, Qt::Horizontal, tr("Quantity"));

ui.tableView->setModel(&model);

for (int row = 0; row < 4; ++row) {
    for (int column = 0; column < 2; ++column) {
        QModelIndex index = model.index(row, column, QModelIndex());
        model.setData(index, QVariant((row+1) * (column+1)));
    }
}

Right 正确的写法

QStandardItemModel *model;

model = new QStandardItemModel(4,2);
ui.tableView->setModel(model);

model->setHeaderData(0, Qt::Horizontal, tr("Label"));
model->setHeaderData(1, Qt::Horizontal, tr("Quantity"));

for (int row = 0; row < 4; ++row) {
    for (int column = 0; column < 2; ++column) {
        QModelIndex index = model->index(row, column, QModelIndex());
        model->setData(index, QVariant((row+1) * (column+1)));
    }
}

QTableWidget与QTableView的区别相关推荐

  1. Qt之QTableView、QTableWidget

    提示:此文简单介绍了QTableWidget及QTableView的区别,以QTableWidget为例,讲述表格样式,并演示了表格样式静态和动态的效果. 文章目录 前言 一.QTableView和Q ...

  2. QTableView和QTableWidget的区别是什么?

    QTableView和QTableWidget的区别是什么? 1.QTableWidget继承自QTableView(后者继承前者).QSqlTableModel能与QTableView绑定,但不能于 ...

  3. Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)

    目录 1.QTableView类 2.QListView类 3.QListWidet类 4.QTableWidget类 5.QTreeWidget和QTreeWidgetltem类 表格与树解决的问题 ...

  4. QT QTableWidget 用法总结

    QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中的DataGrid.说到QTableWidget,就必须讲一下它跟QTabelView的区别了.QTableWidge ...

  5. Qt中QTableWidget用法总结

    QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中的DataGrid.说到QTableWidget,就必须讲一下它跟QTabelView的区别了.QTableWidge ...

  6. 【转】Qt QTableview使用

    QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中的DataGrid.说到QTableWidget,就必须讲一下它跟QTabelView的区别了.QTableWidge ...

  7. PyQt5试验:基于QTableWidget的应用

    PyQt5试验:基于QTableWidget的应用 前言: 大家好,这里是Seon塞翁.本文内容为基于 QtableWidget 控件,结合时间管理四象限思想,制作一个简易的任务优先度计算器. 需先对 ...

  8. Qt下QTableWidget的使用

    1.QTableWidget的基本设置 ui->tableWidget->setColumnCount(11); ui->tableWidget->setRowCount(Nu ...

  9. QT QTableWidget的用法

    简述: 表格类是Qt中常用的控件,如QTableWidget,QTableView.QTableWidget是QTableView的子类,主要区别是QTableView可以使用自定义的数据模型来显示内 ...

最新文章

  1. HDU_oj_2021 发工资喽
  2. 【Binder 机制】Native 层 Binder 机制分析 ( service_manager.c | 开启 Binder | 注册 Binder 进程上下文 | 开启 Binder 循环 )
  3. 李宏毅深度学习——第一天(Bias and Variance)
  4. 萤石云平台接入_前端接入监控视频
  5. php获取当前设备,Linux_在Linux系统中使用lsblk和blkid显示设备信息的方法,今天我们将会向你展示如何使 - phpStudy...
  6. js中的extend的用法及其JS中substring与substr的区别
  7. Coursera自动驾驶课程第16讲:LIDAR Sensing
  8. 三维卷积神经网络预测MNIST数字详解
  9. 破环计算机系统的案件量刑,破坏计算机信息系统罪如何定罪量刑
  10. oracle 11g表空间之最大最小
  11. SOME/IP报文格式-Payload
  12. 让cajviewer记住正在浏览的文献,下次启动时自动打开上次浏览的文献
  13. 利用浏览器书签执行脚本辅助
  14. 学计算机优盘多少内存够用,u盘建议买多大内存的
  15. 从零开始成为优秀的交互设计师
  16. python 安装问题
  17. lambda表达式和Stream
  18. ARCHPR学习笔记
  19. 全国竞赛算不算全国计算机二级,竞赛证书的等级如何区分
  20. FastConverter .FP3转换为几乎任何流行的格式

热门文章

  1. mysql哪些字段适合索引_(转)Mysql哪些字段适合建立索引
  2. Pytorch中GPU使用
  3. 本期课程已满,欢迎关注后续期次 | 临床基因组学数据分析实战助力解析Case,快速发表文章...
  4. 鸟类南飞,去的是哪个“南方”?
  5. 花器官身份基因与靶基因间的调控进化情况
  6. M1芯片Mac也可以安装Windows系统啦 使用PD16虚拟机安装ARM版Windows10教程
  7. 2.2 基本算法之递归和自调用函数 8758 2的幂次方表示 python
  8. 1.5编程基础之循环控制 21 角谷猜想
  9. 树莓派人脸识别_【树莓派人工智能篇】第7课 垃圾分类
  10. Flask笔记-使用Cookie及简单加密判断是否为登录用户