我正在编写一个应该在另一台计算机上运行的程序,所以我需要有.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
的完整路径,它没有任何问题,但我需要它在其他计算机上工作,所以它不适合我。
答案 0 :(得分:0)
我认为这个问题可能与电流路径有关。从Qt Designer启动应用程序时,当前路径是../(当前目录的父级)。直接启动应用程序时,默认路径是./(.exe所在的当前目录)。您可以使用此代码获取默认目录的通用路径:
QString path = QApplication::applicationDirPath() % "/";
顺便说一句,您可以使用QFileDialog类让用户手动选择文件。最好使用SqLite存储用户,汽车等,而不是文本文件。 Qt为SqLite提供内置支持 - 它快速且易于使用。