QT 4: программирование GUI на С++ | страница 70
>04 if (с) {
>05 return c->text();
>06 } else {
>07 return "";
>08 }
>09 }
Закрытая функция text() возвращает формулу заданной ячейки. Если cell() возвращает нулевой указатель, то это означает, что ячейка пустая, и поэтому мы возвращаем пустую строку.
>01 QString Spreadsheet::formula(int row, int column) const
>02 {
>03 Cell *c = cell(row, column);
>04 if (с) {
>05 return c->formula();
>06 } else {
>07 return "";
>08 }
>09 }
Функция formula() возвращает формулу ячейки. Во многих случаях формула и текст совпадают; например формула «Hello» соответствует строке «Hello», поэтому при вводе пользователем в ячейку строки «Hello» и нажатии клавиши Enter в ячейке отобразится текст «Hello». Но имеется несколько исключений:
• Если формула представлена числом, именно оно и будет отображаться. Например, формула «1.50» обозначает значение 1.5 типа double, которое отображается в электронной таблице как выровненное вправо значение «1.5».
• Если формула начинается с одиночной кавычки, остальная часть формулы интерпретируется как текст. Например, результатом формулы «'12345» будет строка «12345».
• Если формула начинается со знака равенства («=»), то ее значение интерпретируется как арифметическое выражение. Например, если ячейка A1 содержит «12» и ячейка A2 содержит «6», то результатом формулы «=A1+A2» будет 18. Задача преобразования формулы в значение выполняется классом Cell. Здесь следует иметь в виду, что отображаемый в ячейке текст соответствует значению, полученному в результате расчета формулы, а не является текстом самой формулы.
>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 }
Закрытая функция setFormula() задает формулу для указанной ячейки. Если ячейка уже имеет объект Cell, мы его повторно используем. В противном случае мы создаем новый объект Cell и вызываем QTableWidget::setItem() для вставки его в таблицу. В конце мы вызываем для этой ячейки функцию setFormula(), что приводит к перерисовке ячейки, если она отображается на экране. Нам не надо беспокоиться об удалении в будущем объекта Cell; QTableWidget является собственником ячейки и будет автоматически удалять ее содержимое в нужное время.
>01 QString Spreadsheet::currentLocation() const