【问题标题】:Qt how to check if openUrl() is already open ? in windowsQt 如何检查 openUrl() 是否已经打开?在窗户里
【发布时间】:2013-05-22 19:34:02
【问题描述】:

在 Qt 应用程序中即时使用此功能打开 chm 帮助文件:

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

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

【问题讨论】:

  • 你可以使用 urlHandler 并检查 URL 是否仍然打开

标签: c++ qt window


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    好的,从这个链接: 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(),则调用接收器对象上的给定方法,而不是 QDesktopServices 启动外部应用程序。

    这样您就可以调用自己的进程并进行处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 2012-08-30
      • 1970-01-01
      • 2019-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多