Qt如何检查openUrl()是否已经打开?在windows

Qt how to check if openUrl() is already open ? in windows

本文关键字:windows openUrl 何检查 检查 Qt 是否      更新时间:2023-10-16

在Qt应用程序中使用这个函数打开chm帮助文件:

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

问题是当我单击它时,我希望它只打开my_help_file.chm的一个实例现在我可以打开多少实例,我点击打开按钮。能做到吗?

对于这个特定的函数,可能没有一个好的方法来实现您想要的效果。您可以跟踪按钮是否在应用程序中被单击,但由于打开URL的应用程序对您来说是未知的(因为它取决于操作系统来决定启动什么(如果有的话)),因此没有很好的方法来知道用户是否随后关闭了窗口。

ok,从这个链接: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()行为的方法。如果openUrl()使用指定方案的URL调用,则调用接收器对象上的给定方法,而不是QDesktopServices启动外部应用程序。