QT ресурсы не работают - PullRequest
       2

QT ресурсы не работают

0 голосов
/ 25 апреля 2018

Я пишу программу, которая должна работать на другом компьютере, поэтому мне нужно иметь при себе мои .txt файлы.

Я создал файл ресурсов QT и добавил один .txt файл, затем я использовал его в трех окнах.Он работал прекрасно, пока я не добавил еще один файл .txt в ресурс, который используется только в одном окне.

Итак, у меня есть файл users.txt, из которого я выполняю вход в программу и управляю учетными записями пользователей, и у меня естьcars.txt, которая является базой данных для автомобилей.

QFile text(":konta/users.txt");
text.open(QIODevice::ReadOnly | QIODevice::Text);
QTextStream wczytaj(&text);

Эта часть работает, но в следующем окне

QFile text(":konta/users.txt");
    text.open(QIODevice::ReadOnly);
    QTextStream wczytaj(&text);

Эта часть не работает, у меня есть функция, которая проверяет, открыт ли файл и существует ли он, и возвращаетчто он существует, но не открыт.

и теперь самое новое окно:

QFile baza(":/auta/cars.txt");
     baza.open(QIODevice::Append | QIODevice::Text);
    QTextStream zapisz(&baza);
    if(!baza.exists()){QMessageBox::warning(this,"Uwaga","Baza nie została odnaleziona");}
    else if(!baza.isOpen()){QMessageBox::warning(this,"Uwaga","Baza nie została otworzona");}

Та же проблема, файл существует, но не открывается.Странно, что это работает в одном окне.До того, как я добавил второй .txt файл, все случаи работали (кроме третьей части кода, которая не существовала в то время).Я ничего не изменил в этих файлах или функциях.

Я должен также добавить, что если я даю им полный путь к файлу C/folder/folder/file.txt, он работает без проблем, но мне нужно, чтобы он работал с другимикомпьютеры, так что это не хорошо для меня.

1 Ответ

0 голосов
/ 26 апреля 2018

Полагаю, что проблема может быть в пути токов. Когда вы запускаете ваше приложение из Qt Designer, текущий путь - это ../ (родительский элемент текущего каталога). При запуске приложения путь к файлу по умолчанию - ./ (текущий каталог, в котором находится .exe). Вы можете использовать этот код, чтобы получить универсальный путь к каталогу по умолчанию:

QString path = QApplication::applicationDirPath() % "/";

Кстати, вы можете использовать класс QFileDialog, чтобы позволить пользователю выбирать файлы вручную. И лучше использовать SqLite для хранения ваших пользователей, автомобилей и т. Д., Чем текстовые файлы. Qt предоставляет встроенную поддержку SqLite - это быстро и просто в использовании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...