資源簡介
用QT實現(xiàn)的表格編輯器
代碼片段和文件信息
#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?==?‘*‘)?{
???????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4653??2006-02-20?18:34??spreadsheet\cell.cpp
?????文件????????638??2006-02-20?18:34??spreadsheet\cell.h
?????文件???????1926??2006-02-20?18:34??spreadsheet\finddialog.cpp
?????文件????????640??2006-02-20?18:34??spreadsheet\finddialog.h
?????文件????????495??2006-02-20?18:34??spreadsheet\gotocelldialog.cpp
?????文件????????296??2006-02-20?18:34??spreadsheet\gotocelldialog.h
?????文件???????1772??2006-02-20?18:34??spreadsheet\gotocelldialog.ui
?????文件???????1339??2006-02-20?18:34??spreadsheet\images\copy.png
?????文件???????1323??2006-02-20?18:34??spreadsheet\images\cut.png
?????文件???????2011??2006-02-20?18:34??spreadsheet\images\find.png
?????文件????????908??2006-02-20?18:34??spreadsheet\images\gotocell.png
?????文件???????1740??2006-02-20?18:34??spreadsheet\images\icon.png
?????文件????????852??2006-02-20?18:34??spreadsheet\images\new.png
?????文件???????2073??2006-02-20?18:34??spreadsheet\images\open.png
?????文件???????1745??2006-02-20?18:34??spreadsheet\images\paste.png
?????文件???????1187??2006-02-20?18:34??spreadsheet\images\save.png
????..A.SH.?????15360??2008-03-14?11:28??spreadsheet\images\Thumbs.db
?????文件????????188??2006-02-20?18:34??spreadsheet\main.cpp
?????文件??????16647??2008-03-14?11:15??spreadsheet\mainwindow.cpp
?????文件???????1987??2006-02-20?18:34??spreadsheet\mainwindow.h
?????文件???????5274??2008-03-14?11:22??spreadsheet\Makefile
?????文件???????9124??2008-03-14?11:22??spreadsheet\Makefile.Debug
?????文件???????9349??2008-03-14?11:22??spreadsheet\Makefile.Release
?????文件????????321??2008-03-14?11:22??spreadsheet\ob
?????文件????????347??2008-03-14?11:22??spreadsheet\ob
?????文件??????15382??2008-03-14?11:11??spreadsheet\release\cell.o
?????文件??????10072??2008-03-14?11:11??spreadsheet\release\finddialog.o
?????文件???????9637??2008-03-14?11:11??spreadsheet\release\gotocelldialog.o
?????文件???????2839??2008-03-14?11:11??spreadsheet\release\main.o
?????文件??????56231??2008-03-14?11:22??spreadsheet\release\mainwindow.o
............此處省略31個文件信息
評論
共有 條評論