资源简介
用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心电图
相关资源
- Qt Quick自定义下拉框
- qt字符设备驱动,简单易学
- QT程序学生管理系统
- QT程序打地鼠源码,自己编写,测试无
- QT使用GSoap发布WebService的Demo
- QT不卡界面Demo V2
- 原创Qt 串口基础编程代码
- Qt全局热键 QtGlobalShortcut文档
- qt 5.9.1 调用周立功CAN卡第三方库
- 使用Qt实现可编辑的画图程序
- 使用Qt实现简单的画图程序
- Qt5.X的linuxfb平台源码补丁包
- Qt之QDoubleSlider 继承QSlider的双向滑块
- qt实现modbus
- 在QT中使用visp库来抓取pylon相机的测试
- 基于qt的闹钟
- QWebEngineView使用,点击链接,上一页,
- [QT]获取鼠标坐标以及按键响应
- 基于qt做的画板
- Qt 多线程访问同一个变量
- 基于QT图形界面的GPS导航软件系统的设
- Qt一步一步实现插件通信
- Qt4 百度地图 定位
- Qt绘制编辑移动矢量图形
- Qt5 qml TreeView 迄今为止功能最全的树控
- QML自定义菜单样式
- QT计算器功能全实现 支持15位小数
- Qt编写串口调试助手V2016终结版
- 基于qt4串口调试助手
- QtQuick实现无边框窗口的拉伸,拖拽
评论
共有 条评论