2017-02-09 174 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

相关问题