01 void Spreadsheet::setFormula(int row, int column,
const QString &formula)
02 {
03 Cell *c = cell(row, column);
04 if (!c) {
05 с = new Cell;
06 setItem(row, column, с);
07 }
08 c->setFormula(formula);
09 }
Закрытая функция
01 QString Spreadsheet::currentLocation const
02 {
03 return QChar('A' + currentColumn)
04 + QString::number(currentRow + 1);
05 }
Функция
01 QString Spreadsheet::currentFormula const
02 {
03 return formula(currentRow, currentColumn);
04 }
Функция
01 void Spreadsheet::somethingChanged
02 {
03 if (autoRecalc)
04 recalculate;
05 emit modified;
06 }
Закрытый слот
Загрузка и сохранение
Теперь мы реализуем загрузку и сохранение файла данных для приложения Электронная таблица, используя двоичный пользовательский формат. Для этого мы используем объекты
Мы начнем с записи файла данных Электронная таблица:
01 bool Spreadsheet::writeFile(const QString &fileName)
02 {
03 QFile file(fileName);
04 if (!file.open(QIODevice::WriteOnly)) {
05 QMessageBox::warning(this, tr("Spreadsheet"),
06 tr("Cannot write file %1:\n%2.")
07 .arg(file.fileName)
08 .arg(file.errorString));
09 return false;
10 }
11 QDataStream out(&file);
12 out.setVersion(QDataStream::Qt_4_1);
13 out << quint32(MagicNumber);
14 QApplication::setOverrideCursor(Qt::WaitCursor);
15 for (int row = 0; row < RowCount; ++row) {
16 for (int column = 0; column < ColumnCount; ++column) {
17 QString str = formula(row, column);
18 if (!str.isEmpty)
19 out << quint16(row) << quint16(column) << str;
20 }
21 }
22 QApplication::restoreOverrideCursor;
23 return true;
24 }
Функция