【发布时间】:2013-11-30 00:35:21
【问题描述】:
我在内存中有代表图像的数据。我想在默认程序中打开图像以打开图像。因此,我创建了一个临时文件,将数据写入其中,然后使用默认应用程序打开该文件。目前,我正在使用 Qt 通过QDesktopServices::openUrl ( const QUrl & url ) 完成最后一步。问题是我现在在磁盘上有这个随机文件。有没有一种方法可以让我对文件进行删除排队,以便在应用关闭后将其删除?
就操作系统而言,我更喜欢独立于操作系统的解决方案,但我猜可能不存在。因此,如果您可以链接到/发布如何在 linux/osx/windows 中执行此操作,那将非常有帮助。
【问题讨论】:
-
您的程序需要在默认应用程序显示文件期间处于活动状态吗?如果没有,请等待外部程序结束并删除文件。
-
@Babblo 我想到了,问题是我不知道使用什么应用程序打开文件。此外,即使我知道应用程序的名称是什么,也可能有不止一个实例,我也不知道它是哪个。
-
我对 QT 了解不多,但我很确定会有一些方法来启动外部进程并等待它完成。
-
在 Posix 上,尝试
mkstemp。 -
@chacham15 我很久以前就这样做了,所以细节非常模糊,但是您绝对可以打开一个文档并等待相关进程停止。 IIRC 我当时使用 WinAPI
ShellExecuteEx做到了这一点,但如果其他操作系统不提供相同的服务,我会感到非常惊讶。但是我不确定 Qt 是否提供了相应的跨平台抽象,因此您可能必须编写平台相关代码 (#ifdefs)。