使用默认程序打开txt文件

时间:2014-01-13 03:13:17

标签: c++ qt directory default

在我的程序中,我有一个按钮,我想在相对目录中打开一个文本文件。我正在使用这样的QDesktopServices:

QDesktopServices::openUrl(QUrl::fromLocalFile("file:///stuff/block_settings.txt"));

按下按钮时,没有任何反应。

该文件位于名为“stuff”的文件夹中,该文件夹与我的.exe位于同一位置。它与我所有其他任务使用的目录相同。

我做错了什么?

感谢。

2 个答案:

答案 0 :(得分:1)

  

该文件位于名为“stuff”的文件夹中,该文件夹与我的.exe位于同一位置。它与我所有其他任务使用的目录相同。我做错了什么?

好像你的完整路径是一个过度复杂的。我建议使用这个intead:

  

QString QCoreApplication::applicationDirPath() [static]

     

返回包含应用程序可执行文件的目录。

     

例如,如果您在C:\ Qt目录中安装了Qt,并运行了regexp示例,则此函数将返回“C:/ Qt / examples / tools / regexp”。

     

在Mac OS X上,这将指向实际包含可执行文件的目录,该目录可能位于应用程序包内(如果应用程序已捆绑在一起)。

     

警告:在Linux上,此函数将尝试从/ proc文件系统获取路径。如果失败,则假定argv [0]包含可执行文件的绝对文件名。该函数还假定应用程序尚未更改当前目录。

所以,你会写这段代码:

QDesktopServices::openUrl(QString("%1/stuff/block_settings.txt")
                          .arg(QCoreApplication::applicationDirPath()));

答案 1 :(得分:-2)

我解决了这个问题。改为:

QDesktopServices::openUrl(QUrl("file:stuff\\block_settings.txt"));

不确定这是如何工作的,因为除了w / e

之外,我没有在任何教程上看到该配置