资源简介
附送一个编译完成的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漏洞检查工具,支持到最新版本
相关资源
- 360UI完美界面
- QQ 登录界面 Qt实现
- powerdesigner中文帮助文档及初学者必看
- Qt5实现的俄罗斯方块
- 基于qt5、sftp上传文件
- QtPropertyBrowser
- Qt俄罗斯方块源码亲测通过编译
- PowerDesigner帮助文档中文
- Qt 做的俄罗斯方块游戏代码
- QT+ffmpeg+多摄像头+实时Ubuntu直接可用(
- QT+OpenCV实现图像识别
- 基于qt4的多媒体播放器图片,音乐,
- Qt远程控制软件源码
- Qt之USB数据监测软件源程序
- 流视界(工程+SDK)
- 使用FFmpeg和Qt制作图形化转码工具
- 程序包.rar基于pyqt+OpenCV设计的用户密
- QT插件框架
- AD较为详细的规则配置设置
- Dashboard.rar
- wenshidushangweiji.rar
- 基于zigbee的qt 智能大棚
- 登陆界面设计
- 《Qt学习之路2》——豆子
- opengl与QT实现天空盒
- Qt实现窗体在显示屏旁边自动隐藏/显
- qt利用tcp通信相互发送图片
- QTITANRIBBON
- QT中的图书管理系统
- Qt通过串口读单片机温度数据画动态波
评论
共有 条评论