资源简介
用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\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个文件信息
- 上一篇:Goland theme皮肤_VSCode风格
- 下一篇:labview心电图
相关资源
- mgn-mqt82.exe
- Trojan-Qt5-Windows-0.0.4.rar
- 酒店管理系统基于Qt Creator5)
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- QT,JPEG解码源代码(已完成)
- Qt 播放音频文件
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- QT酷炫界面开发指南《QmlBook》
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- Qt软件开发 完整项目代码
- MQTT_3.1protocol_Specific中文版
- 在QT中使用RTP进行视频的采集和传输
- Mini6410 Qt4和Qtopia编程开发指南
- Qt实现Code39条形码
- qt_ffmpeg_mp4_export_and_import.zip
评论
共有 条评论