0

我对 C++ 和 QT 很陌生。基本上,我只是做了 Java 的东西,但是我们被扔进了 C++ 的一个模块中,我们必须在其中设计一个 Zork 游戏 UI。我计划创建 Room 对象的方式是使用 roomnum.long、.short 和 .name 构造 Room,分别表示 long desc、short desc 和 name。

对于第一个房间,我将暂时直接加载文件,直到我正确处理对象等。但是,我似乎无法将文件写入文本标签。返回“重新启动游戏等”确实会在按钮按下时写入,但不会写入文件的内容。Rooms 文件夹与源文件(在本例中为 islandmain.cpp)位于同一文件夹中

有任何想法吗?

void TheIslandMain::on_startButton_clicked()
{
    ui->roomDesc->setText(readFirstRoom("/Rooms/room1.long"));
    ui->roomDesc->setWordWrap(true);
}

QString TheIslandMain::readFirstRoom(QString filename)
{
    QFile mFile(filename);

    if (!mFile.open(QFile::ReadOnly | QFile::Text))
    {
        qDebug() << "Could not open file for reading Line 31";
        return "Could not load file. Please restart game.";
    }

    QTextStream in(&mFile);
    QString fileInput = in.readAll();

    qDebug() << fileInput;

    mFile.close();

    return fileInput;
}
4

2 回答 2

0

检查文件是否存在,bool QFile::exists(const QString& path)以及它是否只有您在函数中拥有的文件名或整个路径(需要路径)

苏龙仔

于 2013-02-12T11:12:45.917 回答
0

/Rooms/room1.long指向根目录中的文件,然后是 Rooms,然后是 room1.long 作为文件。IfRooms是它需要相对于应用程序本身的目录,所以如果Rooms它与您的应用程序在同一目录中,它只是Rooms/room1.long,如果它在更高级别../Rooms/room1.longResources/Rooms/room1.long.

于 2013-02-12T11:21:15.260 回答