• 大小: 2.62MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-13
  • 语言: 其他
  • 标签: QT  电子表格  Designer  

资源简介

附送一个编译完成的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\object_script.spreadsheet.Debug

     文件       9825  2009-11-22 23:33  spreadsheet\Makefile.Release

     文件        347  2009-11-22 23:33  spreadsheet\object_script.spreadsheet.Release

     文件       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个文件信息

评论

共有 条评论