04 int column = currentColumn() - 1;
05 while (row>= 0) {
06 while (column >= 0) {
07 if (text(row, column).contains(str, cs)) {
08 clearSelection();
09 setCurrentCell(row, column);
10 activateWindow();
11 return;
12 }
13 --column;
14 }
15 column = ColumnCount - 1;
16 --row;
17 }
18 QApplication::beep();
19 }
Слот
Реализация других меню
Теперь мы реализуем слоты для пунктов меню Tools и Options.
01 void Spreadsheet::recalculate()
02 {
03 for (int row = 0; row < RowCount; ++row) {
04 for (int column = 0; column < ColumnCount; ++column) {
05 if (cell(row, column))
06 cell(row, column)->setDirty();
07 }
08 }
09 viewport()->update();
10 }
Слот
Мы выполняем цикл по всем ячейкам и вызываем функцию
Затем мы вызываем для области отображения функцию
01 void Spreadsheet::setAutoRecalculate(bool recalc)
02 {
03 autoRecalc = recalc;
04 if (autoRecalc)
05 recalculate();
06 }
Слот
Нам не нужно реализовывать специальную функцию для пункта меню Options | Show Grid, поскольку в
01 void Spreadsheet::sort(const SpreadsheetCompare &compare)
02 {
03 QList
04 QTableWidgetSelectionRange range = selectedRange();
05 int i;
06 for (i = 0; i < range.rowCount(); ++i) {
07 QStringList row;
08 for (int j = 0; j < range.columnCount(); ++j)
09 row.append(formula(range.topRow() + i,
10 range.leftColumn() + j));