Саммерфилд Марк
Шрифт:
Функция currentLocation возвращает текущее положение ячейки, используя обычную форму представления ее координат в электронной таблице с обозначением буквой положения столбца, за которой идет номер строки. Функция MainWindow::updateStatusBar использует ее для отображения положения ячейки в строке состояния.
Функция currentFormula возвращает формулу текущей ячейки. Она вызывается из функции MainWindow::updateStatusBar.
Закрытый слот somethingChanged делает перерасчет всей электронной таблицы, если включен режим Auto—Recalculate (автоматический пересчет). Он также генерирует сигнал modified.
Загрузка и сохранение
Теперь мы реализуем загрузку и сохранение файла данных для приложения Электронная таблица, используя двоичный пользовательский формат. Для этого мы используем объекты QFile и QDataStream, которые совместно обеспечивают независимый от платформы ввод—вывод в двоичном формате.
Мы начнем с записи файла данных Электронная таблица:
Функция writeFile вызывается из MainWindow::saveFile для записи файла на диск. Она возвращает true при успешном завершении и false при ошибке.
Мы создаем объект QFile, задавая имя файла, и вызываем функцию open для открытия файла для записи данных. Мы также создаем объект QDataStream, который предназначен для работы с QFile и использует его для записи данных.
Непосредственно перед записью данных мы изменяем курсор приложения на стандартный курсор ожидания (обычно он имеет вид песочных часов) и затем восстанавливаем нормальный курсор после окончания записи данных. В конце функции файл автоматически закрывается деструктором QFile.
QDataStream поддерживает основные типы С++ совместно со многими типами Qt. Их синтаксис напоминает синтаксис классов <iostream> стандартного С++. Например,
выполняет запись в поток значений переменных x, у и z, а
считывает их из потока. Поскольку базовые типы С++, такие как char, short, int, long и long long, на различных платформах могут иметь различный размер, надежнее преобразовать их типы в qint8, quint8, qint16, quint16, qint32, quint32, qint64 и quint64, что гарантирует использование объявленного в них размера (в битах).