问:如何检查openUrl()是否已经打开?在窗户

时间:2013-05-22 19:34:03

标签: c++ qt window

在Qt app中使用此功能打开chm帮助文件:

void ToolBar::OpenHelp()
{
   QDesktopService::openUrl(QUrl("my_help_file.chm")) ;
}

问题是当我点击它时我希望它只打开my_help_file.chm的一个实例 现在我可以打开我点击打开按钮的实例数。 如果以某种方式完成了吗?

2 个答案:

答案 0 :(得分:1)

使用此特定功能可能无法实现您想要的效果。您可以跟踪是否已在应用程序中单击该按钮,但由于您不知道打开URL的应用程序(因为由操作系统来决定启动什么(如果有的话)),所以没有了解用户随后是否关闭窗口的好方法。

答案 1 :(得分:1)

好的,从这个链接: https://qt-project.org/forums/viewthread/10945

和这个类引用: http://harmattan-dev.nokia.com/docs/library/html/qt4/qdesktopservices.html#setUrlHandler

我可以为这个问题建议一个解决方案,但我不确定它是否有效。 使用UrlHandler,您可以自定义openUrl函数的行为。

  

嗯,我认为没有简单的方法可以做到这一点。乍一看,我会说使用QProcess自己生成外部进程。请参阅qdesktopservices.cpp,了解如何以独立于平台的方式执行此操作。

_

  

此函数提供了一种自定义openUrl()行为的方法。如果使用具有指定方案的URL调用openUrl(),则调用receiver对象上的给定方法而不是QDesktopServices启动外部应用程序。

所以你可以调用自己的进程并处理它。