2017-02-09 169 views
0

我需要打開配置文件。配置文件位置是exe文件所在的目錄。基本上,我怎麼能得到這個位置?如何確定使用Qt的可執行文件的目錄?

我試圖使用QDir,但是當前代碼返回錯誤,當文件沒有打開。

QString cfg_name = QDir::currentPath() + "config.cfg"; 
QFile File(cfg_name); 
if (File.open(QIODevice::ReadOnly)) 
{ 
    QTextStream in(&File); 
    int elementId; 
    while (!in.atEnd()) 
    { 
     QString line = in.readLine(); 
     filename[elementId] = line; 
     elementId++; 
    } 
} 
else 
{ 
    QMessageBox msgBox; 
    msgBox.setText("Can't open configuration file!"); 
    msgBox.exec(); 
} 
File.close(); 

回答

7

使用QCoreApplication::applicationDirPath()而不是QDir::currentPath()

QCoreApplication::applicationDirPath()返回與包含應用程序可執行文件的目錄的路徑QString,而QDir::currentPath()返回QString與應用程序的當前目錄的絕對路徑。

「當前目錄」通常不是可執行文件所在的位置,而是其執行位置。當前目錄也可以在應用程序進程的生命週期中更改,並用於在運行時解析相對路徑。

因此,在你的代碼:

QString cfg_name = QDir::currentPath() + "/config.cfg"; 
QFile File(cfg_name); 

應該打開同一個文件

QFile File("config.cfg"); 

但你可能只是想

QFile File(QCoreApplication::applicationDirPath() + "/config.cfg"); 
+0

它仍然返回我的消息框,什麼時候能」 t打開文件。 –

+0

我在代碼中發現錯誤,對不起。 'QString cfg_name = QDir :: currentPath()+「/config.cfg」;' –

+1

@ЦунскийНикита謝謝,糾正了我的答案。 – jotik

相關問題