在我的程序中,我有一个按钮,我想在相对目录中打开一个文本文件。我正在使用这样的QDesktopServices:
QDesktopServices::openUrl(QUrl::fromLocalFile("file:///stuff/block_settings.txt"));
按下按钮时,没有任何反应。
该文件位于名为“stuff”的文件夹中,该文件夹与我的.exe位于同一位置。它与我所有其他任务使用的目录相同。
我做错了什么?
感谢。
答案 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
之外,我没有在任何教程上看到该配置