0

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

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

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

4

2 回答 2

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

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

于 2013-05-26T15:44:01.600 回答
1

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

于 2013-05-22T19:38:02.267 回答