資源簡介
附送一個編譯完成的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漏洞檢查工具,支持到最新版本
評論
共有 條評論