QTableWidget与QTableView的区别
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)));
}
}
https://blog.csdn.net/swartz_lubel/article/details/54986372
QTableWidget与QTableView的区别的更多相关文章
- QTableWidget和 QTableView翻页效果(准确计算Scroll,然后使用setSliderPosition函数)
以QTableView举例,QTableWidget使用相同 int CQTTableViewPageSwitch::pageCount(QTableView *p)//QTableView 总页 ...
- QT基本使用
安装方法: ubuntu12.04下安装QT方法:http://blog.csdn.net/xsl1990/article/details/8299756 输入以下命令: sudo apt-get i ...
- PyQt5学习笔记
setMouseTracking bool mouseTracking这个属性保存的是窗口部件跟踪鼠标是否生效.如果鼠标跟踪失效(默认),当鼠标被移动的时候只有在至少一个鼠标按键被按下时,这个窗口部件 ...
- QTableWidget控件总结<二>
QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中的DataGrid.说到QTableWidget,就必须讲一下它跟QTabelView的区别了.QTableWidge ...
- 【转载】pyqt QTableWidget的使用
转载地址: http://blog.sina.com.cn/s/blog_9b78c91101019sgi.html QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中 ...
- QTableWidget 用法总结(只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象)
QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中的DataGrid.说到QTableWidget,就必须讲一下它跟QTabelView的区别了.QTableWidge ...
- QTableWidget
1.QTableWidget继承自QTableView. QSqlTableModel能与QTableView绑定,但不能于QTableWidget绑定. QTableWidget是QTableVi ...
- Qt QTableWidget用法总结
转载:李宏兵 QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中的DataGrid.说到QTableWidget,就必须讲一下它跟QTabelView的区别了. QTa ...
- Qt中 QTableWidget用法总结
转自--> http://edsionte.com/techblog/archives/3014 http://hi.baidu.com/fightiger/item/693aaa0f0f87d ...
随机推荐
- 检测任意日期字符串是否属于当天的java实现方案
有时候我们会遇到很多形式的日期判断,甚至是并不常见的日期形式,比如20161212之类的日期,下面就此来进行代码是否处于当天的日期校验的代码实现来做一个整理. public static boolea ...
- 机器学习-特征选择 Feature Selection 研究报告
原文:http://www.cnblogs.com/xbinworld/archive/2012/11/27/2791504.html 机器学习-特征选择 Feature Selection 研究报告 ...
- 如何在Visual Studio(VS)2012里使用libsvm工具箱
原文:http://blog.csdn.net/u014691453/article/details/40393137 软件版本: Visual Studio版本:VS2012 (注:使用方法在 VS ...
- Think Pad T410键盘溅水有惊无险
昨日不小心单位给配的T410溅水了,由于水不多,用餐巾纸擦干后就晾起来了. 大概过了6小时,心想现在该好了吧,于是按开机键,无效! 当时暗骂Thinkpad给LX做坏了,一点小水都挡不住,还敢号称防洒 ...
- poj 1125 (floyed 最短路径)
Stockbroker Grapevine Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 26395 Accepted: ...
- Android—构建安全的Androidclient请求,避免非法请求
今天通过实例来介绍一下怎样构建安全的Android客户端请求.避免非法请求: server端代码: 代码1-工具类: package com.ghj.p ...
- Hibernate持久化对象的状态
1. 站在持久化的角度 , Hibernate 把对象分为 4 种状态 : 持久化状态, 暂时状态, 游离状态(脱管状态) , 删除状态.Session 的特定方法能使对象从一个状态转换到还有一个状态 ...
- ubuntu——主题更新,Ubuntu-tweak安装
1.首先打开终端 2.在终端中输入sudo apt-add-repository ppa:tualatrix/ppa 回车后输入密码等一会,导入密钥 3.再输入sudo apt-get update ...
- JSP,PHP,Python,Ruby,Perl概要及各自特点
JSP,PHP,Python,Ruby,Perl概要及各自特点 博客分类: JSP PHP Python Ruby Perl概要及各自特点 javascript 互联网技术日新月异,编程的语言层出不 ...
- datagrid("getSelections")只获取一行
页面加载方法如下 function loadSfXtjsList(sfXtjsListId, url, onClickFun) { $("#eastPanel").panel({ ...