06 int numRows = rows.count;
07 int numColumns = rows.first.count('\t') + 1;
08 if (range.rowCount * range.columnCount != 1
09 && (range.rowCount != numRows
10 || range.columnCount !=numColumns)) {
11 QMessageBox::information(this, tr("Spreadsheet"),
12 tr("The information cannot be pasted because the copy "
13 "and paste areas aren't the same size."));
14 return;
15 }
16 for (int i = 0; i < numRows; ++i) {
17 QStringList columns = rows[i].split('\t');
18 for (int j = 0; j < numColumns; ++j) {
19 int row = range.topRow + i;
20 int column = range.leftColumn + j;
21 if (row < RowCount && column < ColumnCount)
22 setFormula(row, column, columns[j]);
23 }
24 }
25 somethingChanged;
26 }
Слот
Затем мы определяем размеры области копирования. Номер строки в таблице является номером строки в
При выполнении операции вставки мы в цикле проходим по строкам и разбиваем каждую строку на значения ячеек, снова используя функцию
01 void Spreadsheet::del
02 {
03 foreach (QTableWidgetltem *item, selectedItems)
04 delete item;
05 }
Слот
01 void Spreadsheet::selectCurrentRow
02 {
03 selectRow(currentRow);
04 }
05 void Spreadsheet::selectCurrentColumn
06 {
07 selectColumn(currentColumn);
08 }
Функции
01 void Spreadsheet::findNext(const QString &str, Qt::CaseSensitivity cs)
02 {
03 int row = currentRow;
04 int column = currentColumn + 1;
05 while (row < RowCount) {
06 while (column < ColumnCount) {
07 if (text(row, column).contains(str, cs)) {