07 QMessageBox::Yes | QMessageBox::Default,
08 QMessageBox::No,
09 QMessageBox::Cancel | QMessageBox::Escape);
10 if (r == QMessageBox::Yes) {
11 return save;
12 } else if (r == QMessageBox::Cancel) {
13 return false;
14 }
15 }
16 return true;
17 }
B
Вызов функции
QMessageBox::warning(
01 void MainWindow::open
02 {
03 if (okToContinue) {
04 QString fileName =
QFileDialog::getOpenFileName(".", fileFilters, this);
05 if (!fileName.isEmpty)
06 loadFile(fileName);
07 }
08 }
Слот
В первом аргументе функции
Во втором аргументе задается название диалогового окна. В третьем аргументе задается каталог начала просмотра файлов; в нашем случае это будет текущий каталог.
Четвертый аргумент определяет фильтры файлов. Фильтр файла состоит из описательной части и образца поиска. Если допустить поддержку не только родного формата файлов приложения Электронная таблица, а также формата файлов с запятой в качестве разделителя и файлов Lotus 1-2-3, нам пришлось бы инициализировать переменные следующим образом:
tr("Spreadsheet files (*.sp)\n"
"Comma-separated values files (*.csv)\n"
"Lotus 1-2-3 files (*.wk1 *.wks)")
Закрытая функция
01 bool MainWindow::loadFile(const QString &fileName)
02 {
03 if (!spreadsheet->readFile(fileName)) {
04 statusBar->showMessage(tr("Loading canceled"), 2000);
05 return false;
06 }
07 setCurrentFile(fileName);
08 statusBar->showMessage(tr("File loaded"), 2000);
09 return true;
10 }