Пишу прогу для курсовой на C++ с Qt. Добавил сохранение файла через QFileDialog::getSaveFileName. При нажатии отмена в диалоговом окне, вся программа вылетает. А если всё-таки сохранить файл, всё нормально работает. Подозреваю, что нужно прописать if для отмены сохранения, но не нашёл методов/сигналов для отслеживания события нажатия на кнопку "Отмена" в диалоговом окне.
Процедура, вызывающая диалоговое окно для сохранения таблицы в файл. Процедура получает таблицу из QTabWidget'а.
QString Widget::topMenuSaveHowFunct(QTableWidget *table, qint16 width, qint16 height)
{
QString strFilter;
QString name = workPlace.tabText(workPlace.currentIndex());
QFile file(name + ".jot");
file.open(QIODevice::WriteOnly | QIODevice::Text);
QString str = QFileDialog::getSaveFileName(nullptr,tr("Сохранить как..."),
name,
"*.jot",
&strFilter);
if(!strFilter.contains("jot"))
{
for(int i = 0; i < width; i++)
{
for(int j = 0; j < height; j++)
{
QTextStream writeStream(&file);
writeStream << i << "," << j << "," << table->takeItem(i,j) << ";\n";
}
}
}
file.close();
return strFilter;
}