折腾了好几天,终于把这本书的第三章和第四章给看了个大概。

里面的函数调用关系可谓是复杂。

整理了一部分的函数关系如下:

cell关系清理

data(role) 返回应该显示的值 或者对齐方式 或者公式
->value() 单元格的值,如果是旧的就重新获得 值给cachedValue并返回 对输入的以‘开头和 = 开头的做特殊处理
->formula() 获得单元格的Edit role
->data(Edit role)
->evalExpression() 计算表达式的值 setFormula(formula) //设置单元格的公式
-> setData(EditRole, formula) 对编辑角色调用setData
-> QTableWidgetItem::setData(role value) 将单元格 用给定的公式 以给定的值 赋值
->setDirty() 如果赋值的是EditRole 把值设为旧的 问题:

??data()在哪里被调用
Qt::DisplayRole
Qt::TextAlignmentRole 还在哪里出现过


??QTableWigetItem 中 text() 和 data()的区别
??把值设为旧的有什么用处?

spreadsheet关系清理

Spreadsheet()
|->QTableWidget::setItemPrototype(new Cell) //设置每个单元格的类型
|->SelectionMode() //设置选择模式 Qt自带
|->somethingChanged() //槽函数
| |->recalculate() //重新计算
| | |->cell() //把单元格转换为Cell形式
| | | ->QTableWidget::item()
| | |->Cell::setDirty() //把所有有值的都设为旧的
| | |->viewport()->update() 更新 ??
| |
| |->modified() //信号
|
|->clear() //清空整张表
|->setRowCount(0)
|->setColumnCount(0)
|->setRowCount(RowCount); //设置有多少行 Qt自带
|->setColumnCount(ColumnCount); //设置有多少列 Qt自带 setAutoRecalculate() //如果自动重算是true就调用下面算子
->recalculate()

里面有些问题我还没有想通。标了问号。

对于这些模块,从小到大整理一下:

最小的是 QTableWigetItem 就是二维表格QTableWidget的自带单元格的表示,但是输入什么就显示什么,没有什么功能

然后是    Cell 是扩展的QTableWigetItem  里面加入了对特殊输入的格式处理和表达式计算功能

再后是    spreadsheet扩展自二维表格QTableWidget 采用了Cell, 加入了复制、 粘贴、 查找、 排序、 保存、 读取的功能。

最后是    MainWindow的功能主要是界面的显示 界面按钮与功能的对接

【QT】C++ GUI Qt4 学习笔记5的更多相关文章

  1. C++ GUI Qt4学习笔记01

    C++ GUI Qt4学习笔记01   qtc++signalmakefile文档平台 这一章介绍了如何把基本的C++只是与Qt所提供的功能组合起来创建一些简单的图形用户界面应用程序. 引入两个重要概 ...

  2. C++ GUI Qt4学习笔记03

    C++ GUI Qt4学习笔记03   qtc++spreadsheet文档工具resources 本章介绍创建Spreadsheet应用程序的主窗口 1.子类化QMainWindow 通过子类化QM ...

  3. C++ GUI Qt4学习笔记08

    C++ GUI Qt4学习笔记08   qtc++signal图形引擎文档 本章介绍Qt的二维图形引擎,Qt的二维图形引擎是基于QPainter类的.<span style="colo ...

  4. C++ GUI Qt4学习笔记09

    C++ GUI Qt4学习笔记09   qtc++ 本章介绍Qt中的拖放 拖放是一个应用程序内或者多个应用程序之间传递信息的一种直观的现代操作方式.除了剪贴板提供支持外,通常它还提供数据移动和复制的功 ...

  5. C++ GUI Qt4学习笔记05

    C++ GUI Qt4学习笔记05   qtc++正则表达式 QIntValidator           --  只让用户输入整数 QDoubleValidator     --  只让用户输入浮 ...

  6. C++ GUI Qt4学习笔记07

    C++ GUI Qt4   qtc++scrollobject编程 事件(event)是由串口系统或者Qt自身产生的,用以响应所发生的各类事情.当用户按下或者松开键盘或者鼠标上的按键时,就可以产生一个 ...

  7. 【QT】C++ GUI Qt4 学习笔记1

    Find对话框实现 平台 Qt5.3.2 MinGW4.8.2 注意创建时用QDialog finddialog.h #ifndef FINDDIALOG_H #define FINDDIALOG_H ...

  8. 【QT】C++ GUI Qt4 学习笔记2

    Go To Cell 利用QT Desinger做好界面后加入的代码有 gotocelldialog.h #ifndef GOTOCELLDIALOG_H #define GOTOCELLDIALOG ...

  9. 【QT】C++ GUI Qt4 学习笔记3

    菜单界面的实现. 看书上第三章,好长,好多代码.我敲了半天,想看看效果,结果却显示不出来.仔细一看,发现spreadsheet的实现在第四章.郁闷.... 又到官网上下代码,结果居然不能运行.难道是因 ...

  10. 【QT】C++ GUI Qt4 学习笔记4

    感觉这本书的顺序设计的太不合理了,出现的最多的一句话就是后面会讲.按照使用的顺序讲不行吗?搞得代码都运行不了. 我决定先直接跳到73页,子类化QTableWidgetItem这一节.因为前面功能的实现 ...

随机推荐

  1. iPad 多任务 Spilt View & Size Class

    iPad 多任务 Spilt View & Size Class 一.多任务简介 iOS 9 以后iPad新增了多任务的支持,主要形式有三种: Slide Over (侧边快捷打开) Spil ...

  2. css的计数器

    更多关于计数器的问题可以参考:https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Getting_Started/Lists

  3. 全键盘Vimium快捷键学习记录

    0.设置而 vimium 的默认搜索引擎: http://www.baidu.com/s?wd= j: 向下细微滚动窗口.  k:向上细微滚动窗口. gg:跳转到页面的顶部.G:跳转到页面的底部.r: ...

  4. C++模板学习

    一.定义函数模板 template<class T> 函数定义 举个例子比较两个数大小: template<class T> int Compare(T a,T b) { ; ...

  5. JS数组的基本用法

    JS数组的用法包括创建.取值赋值.添加以及根据下标(包括数值或字符)来移除元素等等,在本文中将为大家详细介绍,感兴趣的朋友可以参考下. 1.创建数组: //1.1直接创建一个数组对象 var arra ...

  6. 读w3c中文教程对键盘事件解释的感想 -遁地龙卷风

    写这篇博文源于w3c中文教程对键盘事件的解释, onkeydown 某个键盘按键被按下 onkeypress 某个键盘按键被按下并松开 onkeyup 某个键盘按键被松开 可在实践中发现 只注册key ...

  7. 实战CentOS系统部署Hadoop集群服务

    导读 Hadoop是一个由Apache基金会所开发的分布式系统基础架构,Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高 ...

  8. hiho #1309 任务分配

    #1309 : 任务分配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定 N 项任务的起至时间( S1, E1 ), ( S2, E2 ), ..., ( SN,  ...

  9. C++基础知识(1)----文件操作

    参照 小菜鸟上校 的博客 // file operat.cpp : 定义控制台应用程序的入口点. /*上述例子的主要功能是将一个文件的内容复制到另一个文件中, 这个功能主要由一个函数copy来实现.它 ...

  10. Android客户端的图形化拖放操作的设计实现

    为什么要拖放?拖放在某些UI交互中可以简化用户操作. 拖放的步骤包括哪些?“Drag and Drop”,拖放,顾名思义,总共就分三步:1, 开始拖起来:2, 正在拖:3, 放下,进行操作:在这三步里 ...