0

私はC++とQTに非常に慣れていません。基本的に、私は Java をやっただけですが、Zork ゲームの UI を設計する必要があるモジュールのために C++ を使用しています。Room オブジェクトの作成を計画している方法は、roomnum.long、.short、および long desc、short desc、および name の .name を使用して Room を構築することです。

最初の部屋では、オブジェクトなどを適切に取得するまで、ファイルを直接ロードします。ただし、ファイルをテキスト ラベルに書き込むことができないようです。ボタンを押すと、「ゲームの再起動など」という戻り値が書き込まれますが、ファイルの内容は書き込まれません。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.longroot のファイルを指し、次に Rooms を指し、次に room1.long をファイルとして指します。Roomsがアプリケーション自体に対して相対的である必要があるディレクトリである場合、それRoomsがアプリケーションと同じディレクトリにある場合は、Rooms/room1.longそれがより高いレベルにある../Rooms/room1.long場合またはResources/Rooms/room1.long.

于 2013-02-12T11:21:15.260 に答える