#qt #qt5
#qt #qt5
Вопрос:
Я пытаюсь создать файл журнала для приложения. Я создал функцию для его создания:
void MainWindow::Logs(){ QString nomlog = "log.txt"; logtxt = new QFile(nomlog); logtxt-gt;open(QIODevice::WriteOnly | QIODevice::Text); QTextStream out(logtxt); out lt;lt; "This file is generated by Qtn"; QDesktopServices::openUrl(QUrl::fromLocalFile("log.txt")); }
Эта часть работает нормально, файл создан, с нужным текстом.
Но проблема возникает, когда я хочу записать в тот же файл с помощью другой функции. Я попытался поставить условие, чтобы проверить, открыт ли файл, если не появится сообщение об ошибке:
void MainWindow::testconnect(){ logtxt = new QFile("log.txt"); if(logtxt-gt;isOpen()){ QTextStream out(logtxt); out lt;lt; "Le fichier log a été ouvert !n"; } else{ QMessageBox::information(this,"Echec","Le fichier log n'existe pas"); } }
Проблема в том, что сообщение всегда появляется, даже когда я активировал первое действие, которое должно было создать и открыть файл журнала.
Я надеюсь, что это было ясно, извините, если это не так. Не могли бы вы помочь мне с этим, пожалуйста? Спасибо тебе!
Комментарии:
1. Но вы создаете второй QFile.
Ответ №1:
Проблема в том, что вы создаете второй QFile в своей testconnect
функции. Попробуйте сохранить logtxt
как переменную-член вместо того, чтобы постоянно ее воссоздавать. Таким образом, вы будете проверять один и тот же файл, чтобы узнать, открыт ли он.
Комментарии:
1. Танк тебе ! Я объявил об этом вместо этого в главном окне, и теперь это работает, это была действительно глупая ошибка… Мне потребовалось около часа, чтобы починить его, спасибо !
2. Рад помочь! Если это решило вашу проблему, пожалуйста, отметьте ответ как принятый.