• 大小: 197KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: 其他
  • 标签: qt  

资源简介

用QT实现的表格编辑器

资源截图

代码片段和文件信息

#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\object_script.spreadsheet.Debug

     文件        347  2008-03-14 11:22  spreadsheet\object_script.spreadsheet.Release

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

评论

共有 条评论