В функции
Функция
01 void MainWindow::goToCell
02 {
03 GoToCellDialog *dialog = new GoToCellDialog(this);
04 if (dialog->exec) {
05 QString str = dialog->lineEdit->text.toUpper;
06 spreadsheet->setCurrentCell(str.mid(1).toInt - 1,
07 str[0].unicode - 'A');
08 }
09 delete dialog;
10 }
Создание модальных диалоговых окон (и контекстных меню при переопределении
Теперь мы перейдем к созданию диалогового окна Sort. Это диалоговое окно является модальным и позволяет пользователю упорядочить текущую выбранную область, задавая в качестве ключей сортировки определенные столбцы. На рис. 3.14 показан пример сортировки, когда в качестве главного ключа сортировки используется столбец В, а в качестве вторичного ключа сортировки используется столбец А (в обоих случаях сортировка выполняется по возрастанию значений).
01 void MainWindow::sort
02 {
03 SortDialog dialog(this);
04 QTableWidgetSelectionRange range = spreadsheet->selectedRange;
05 dialog.setColumnRange('A' + range.leftColumn,
06 'А' + range.rightColumn);
07 if (dialog.exec) {
08 SpreadsheetCompare compare;
09 compare.keys[0] =
10 dialog.primaryColumnCombo->currentIndex;
11 compare.keys[1] =
12 dialog.secondaryColumnCombo->currentIndex - 1;
13 compare.keys[2] =
14 dialog.tertiaryColumnCombo->currentIndex - 1;
15 compare.ascending[0] =
16 (dialog.primaryOrderCombo->currentIndex == 0);
17 compare.ascending[1] =
18 (dialog.secondaryOrderCombo->currentIndex == 0);
19 compare.ascending[2] =
20 (dialog.tertiaryOrderCombo->currentIndex == 0);
21 spreadsheet->sort(compaге);
22 }
23 }
Порядок действий при программировании функции
• мы создаем диалоговое окно в стеке и инициализируем его;
• мы вызываем диалоговое окно при помощи функции