2013-02-12 26 views
0

我對C++和QT非常陌生。基本上,我只是做了Java的東西,但我們正在用C++拋出一個模塊,我們必須設計一個Zork遊戲UI。我打算創建Room對象的方式是使用roomnum.long,.short和.name作爲長房間,短名稱和名稱的房間。文件輸入 - 文件未被讀取QT

對於第一個房間,我只是直接加載文件,直到我正確地加入對象等。但是,我似乎無法將文件寫入文本標籤。返回「重新啓動遊戲等」確實是按下按鈕寫入的,而不是文件的內容。 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; 
} 
+1

請記住,以'/'開頭的路徑是_absolute_。 – 2013-02-12 11:14:04

回答

0

檢查文件是否存在使用bool QFile::exists(const QString& path)和如果只有你在你的函數或整個路徑(需要路徑)

洙長哉​​的文件名爲

+0

這有助於表明該文件不存在,但我知道它這樣做,它必須是一個路徑程序。什麼是正確的方式來尋找它。 文件結構是 MAINDIR其中包含的.cpp和.h文件 MAINDIR /客房目前只包含room1.long,room1.short,room1.name – 2013-02-12 11:18:07

+0

看,也許文件名不包含路徑文件... – Zaiborg 2013-02-12 11:19:07

+0

嘗試...'QString QDir :: currentPath()[靜態]'看看它是否是你的應用程序文件夾,而不僅僅是添加你的'文件名'到它,它應該工作 – Zaiborg 2013-02-12 11:21:48

0

/Rooms/room1.long指向文件在根目錄下,然後是房間,然後是room1.long作爲文件。如果Rooms是需要與應用程序本身相關的目錄,那麼如果Rooms與您的應用程序位於同一目錄中,那麼它只是Rooms/room1.long,如果它位於更高級別../Rooms/room1.longResources/Rooms/room1.long

+0

乾杯!它實際上正在進入sep dir(Island-BUILD),因此../Island/Rooms/room1.long完成了這項工作。 – 2013-02-12 11:27:33