axe_lankaster13
@axe_lankaster13
C++ разраб с большими планами

Вылетает программа с Qt при отмене сохранения файла?

Пишу прогу для курсовой на 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;
}
  • Вопрос задан
  • 240 просмотров
Решения вопроса 1
@Griglapidus
C++/Qt
Диалог используется неправильно. Какой смысл создавай файл с заведомо известным именем, а потом вызывать диалог для выбора этого имени. Суть в том что имя выбраное в диалоге возвращается в стоку str. Если в диалоге нажать отмену то строка будет пустой, иначе там будет имя файла для сохранения. И уже с этим именем открывать файл для записи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы