QT 资源不起作用

QT resources doesn't work

本文关键字:不起作用 资源 QT      更新时间:2023-10-16

我正在编写一个应该在另一台计算机上使用的程序,因此我需要将我的 .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提供了完整的路径,它没有问题,但是我也需要它在其他计算机上工作,因此对我不利。

我想这个问题可能是在电流路径上。当您从QT Designer当前路径启动应用程序时,是../(当前目录的父级(。启动应用程序时,直接默认路径为./(当前目录您的.exe在哪里(。您可以使用此代码获取通用默认目录的通用路径:

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

顺便说一下,您可以使用qfiledialog类让您手动选择文件。与文本文件相比,最好使用SQLite存储用户,汽车等。QT为SQLite提供了内置的支持 - 它可以快速易于使用。