资源简介
附送一个编译完成的win版本
部分功能尚未完善,仅供学习参考

代码片段和文件信息
#include
#include “cell.h“
Cell::Cell()
{
setDirty();
}
QTableWidgetItem *Cell::clone() const
{
return new Cell(*this);
}
void Cell::setData(int role const QVariant &value)
{
QTableWidgetItem::setData(role value);
if (role == Qt::EditRole)
setDirty();
}
QVariant Cell::data(int role) const
{
if (role == Qt::DisplayRole) {
if (value().isValid()) {
return value().toString();
} else {
return “####“;
}
} else if (role == Qt::TextAlignmentRole) {
if (value().type() == QVariant::String) {
return int(Qt::AlignLeft | Qt::AlignVCenter);
} else {
return int(Qt::AlignRight | Qt::AlignVCenter);
}
} else {
return QTableWidgetItem::data(role);
}
}
void Cell::setFormula(const QString &formula)
{
setData(Qt::EditRole formula);
}
QString Cell::formula() const
{
return data(Qt::EditRole).toString();
}
void Cell::setDirty()
{
cacheIsDirty = true;
}
const QVariant Invalid;
QVariant Cell::value() const
{
if (cacheIsDirty) {
cacheIsDirty = false;
QString formulaStr = formula();
if (formulaStr.startsWith(‘\‘‘)) {
cachedValue = formulaStr.mid(1);
} else if (formulaStr.startsWith(‘=‘)) {
cachedValue = Invalid;
QString expr = formulaStr.mid(1);
expr.replace(“ “ ““);
expr.append(QChar::Null);
int pos = 0;
cachedValue = evalexpression(expr pos);
if (expr[pos] != QChar::Null)
cachedValue = Invalid;
} else {
bool ok;
double d = formulaStr.toDouble(&ok);
if (ok) {
cachedValue = d;
} else {
cachedValue = formulaStr;
}
}
}
return cachedValue;
}
QVariant Cell::evalexpression(const QString &str int &pos) const
{
QVariant result = evalTerm(str pos);
while (str[pos] != QChar::Null) {
QChar op = str[pos];
if (op != ‘+‘ && op != ‘-‘)
return result;
++pos;
QVariant term = evalTerm(str pos);
if (result.type() == QVariant::Double
&& term.type() == QVariant::Double) {
if (op == ‘+‘) {
result = result.toDouble() + term.toDouble();
} else {
result = result.toDouble() - term.toDouble();
}
} else {
result = Invalid;
}
}
return result;
}
QVariant Cell::evalTerm(const QString &str int &pos) const
{
QVariant result = evalFactor(str pos);
while (str[pos] != QChar::Null) {
QChar op = str[pos];
if (op != ‘*‘ && op != ‘/‘)
return result;
++pos;
QVariant factor = evalFactor(str pos);
if (result.type() == QVariant::Double
&& factor.type() == QVariant::Double) {
if (op == ‘*‘) {
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8382 2008-01-09 16:43 spreadsheet\spreadsheet.cpp
文件 861 2008-01-09 16:43 spreadsheet\sortdialog.cpp
文件 271 2008-01-09 16:43 spreadsheet\sortdialog.h
文件 2039 2009-11-21 17:32 spreadsheet\mainwindow.h
文件 10460 2008-01-09 16:43 spreadsheet\sortdialog.ui
文件 1926 2008-01-09 16:43 spreadsheet\finddialog.cpp
文件 395 2009-11-21 15:22 spreadsheet\spreadsheet.pro
文件 1199 2008-01-09 16:43 spreadsheet\gotocelldialog.ui
文件 1504 2009-11-21 16:08 spreadsheet\spreadsheet.h
文件 16040 2009-11-21 17:56 spreadsheet\mainwindow.cpp
文件 640 2008-01-09 16:43 spreadsheet\finddialog.h
文件 296 2008-01-09 16:43 spreadsheet\gotocelldialog.h
文件 603 2008-01-09 16:43 spreadsheet\gotocelldialog.cpp
文件 188 2008-01-09 16:43 spreadsheet\main.cpp
文件 338 2008-01-09 16:43 spreadsheet\spreadsheet.qrc
文件 638 2008-01-09 16:43 spreadsheet\cell.h
文件 4653 2008-01-09 16:43 spreadsheet\cell.cpp
文件 9600 2009-11-22 23:33 spreadsheet\Makefile.Debug
文件 321 2009-11-22 23:33 spreadsheet\ob
文件 9825 2009-11-22 23:33 spreadsheet\Makefile.Release
文件 347 2009-11-22 23:33 spreadsheet\ob
文件 5821 2009-11-22 23:33 spreadsheet\Makefile
文件 2869 2009-11-21 14:34 spreadsheet\ui_gotocelldialog.h
文件 13448 2009-11-21 14:34 spreadsheet\ui_sortdialog.h
文件 1340808 2009-11-21 14:34 spreadsheet\debug\cell.o
文件 1320898 2009-11-21 14:34 spreadsheet\debug\finddialog.o
文件 1322663 2009-11-21 14:35 spreadsheet\debug\gotocelldialog.o
文件 1360499 2009-11-21 14:35 spreadsheet\debug\sortdialog.o
文件 3391 2009-11-21 14:35 spreadsheet\debug\moc_finddialog.cpp
文件 474478 2009-11-21 14:35 spreadsheet\debug\moc_finddialog.o
............此处省略34个文件信息
- 上一篇:数控工作台XY课程设计
- 下一篇:Struts2漏洞检查工具,支持到最新版本
相关资源
- 酒店管理系统基于Qt Creator5)
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- QT,JPEG解码源代码(已完成)
- 新旧坐标换算(采用最小二乘法利用
- Qt 播放音频文件
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- QT酷炫界面开发指南《QmlBook》
- 认识界面以及PCB设计整体要求
- Altium designer超全元件库+封装库部分
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- PowerDesigner16.6 破解补丁
- Altium Designer实战攻略与高速PCB设计P
- Qt软件开发 完整项目代码
- lotus domino notes(包括client administrato
- Type-c 接口封装,24引脚,Altium Design
评论
共有 条评论