在已安装的应用程序中使用Qt帮助文件

加利内特

我为Windows开发了一个Qt应用程序,该帮助文件是使用qhc收集文件以qch格式生成的。使用QHelpEngine将帮助嵌入到应用程序中。帮助文件与应用程序可执行文件放置在同一文件夹中,这对于开发人员构建来说效果很好。

但是,当我们使用WiX安装程序将应用程序部署在“程序文件”中时,文档可以运行,但是搜索功能失败,并且我收到警告:

virtual void fulltextsearch :: clucene :: QHelpSearchIndexWriter :: run():由于CLucene异常而失败。

在开发版本上,CLucene似乎在帮助文件文件夹中创建了一些索引文件。由于帮助文件位于安装文件夹中,因此标准用户无法在此处进行写操作,因此这里不能。

该错误与缺少索引文件创建权限有关吗?如何使CLucene写入用户文件夹?

谢谢

加利内特

我通过查看辅助源代码找到了解决方案。

CLucene始终将其缓存与.qhc写入同一文件夹

Qt Assistant通过不直接打开主qhc来处理此问题。它将其复制到用户配置文件(在中,在Windows中C:\User\Username\appdata\Local\assistant),相应地更新.qch路径,然后打开此用户特定的文件。

我实现了相同的方法,它就像一种魅力。您甚至不必qhc在安装程序中部署,您可以通过QHelpEngine使用不存在的路径进行调用直接创建一个,然后qch使用registerDocumentation

因此,我发现的最好方法是:

  1. 创建一个QHelpEngine.qhc文件的路径,该文件可能不存在,但在存在且可写的文件夹中。我用QStandardPaths::CacheLocation这个。如果需要,Qt将创建一个.qhc文件,或再次打开它。
  2. 遍历所有.qch文件,并检查它们是否使用 engine->registeredDocumentations()
  3. 对于未注册的文档,请在以下位置注册 engine->registerDocumentation
  4. 您的引擎可以使用了

这是我的一个qch文件的代码:

QString collPath = QStandardPaths::writableLocation(QStandardPaths::CacheLocation);
QDir().mkpath(collPath);
collPath.append("/myapp.qhc");

engine = new QHelpEngine(collPath, this);
engine->setupData();

QString docPath = QApplication::applicationDirPath()+"/myapp.qch";

docNS = QHelpEngineCore::namespaceName(docPath);

if(docNS.isEmpty() || !engine->registeredDocumentations().contains(docNS))
{
    if(engine->registerDocumentation(docPath))
    {
        qInfo("Registered documentation %s", qPrintable(docPath));
    }
    else
    {
        qWarning("Could not register documentation file %s", qPrintable(docPath));
        qWarning("Help engine error : %s", qPrintable(engine->error()));
    }
}

//Now you can use "engine" in a text browser

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Delphi XE应用程序中使用CHM HTML帮助文件?

来自分类Dev

无法使用Qt Assistant从Qt应用程序内部获取自定义帮助文件以进行工作

来自分类Dev

如何使用已安装的应用程序打开文件?

来自分类Dev

在帮助文件(Gatsby)中使用env变量

来自分类Dev

无法从delphi(.exe)应用程序打开网络驱动器上的帮助文件(.chm)

来自分类Dev

即使未调用方法将方法添加到帮助文件中,Rails应用程序也会崩溃

来自分类Dev

在Qt应用程序中使用dll

来自分类Dev

QT Creator缺少帮助文件?

来自分类Dev

如何在我的应用程序中使用HLP文件获取上下文相关帮助?

来自分类Dev

如果在 Ubuntu 中,则使用 bash 文件检查已安装的应用程序

来自分类Dev

无法在已编译的应用程序的视图中使用.cs文件

来自分类Dev

无法在已编译的应用程序的视图中使用.cs文件

来自分类Dev

使用硬件设备,但找不到已安装的应用程序

来自分类Dev

如何使用appium从iPhone启动已安装的应用程序

来自分类Dev

使用 django 标签检查已安装的 django 应用程序

来自分类Dev

如何使用python帮助文件功能

来自分类Dev

在本机应用程序中使用已编译的Java代码

来自分类Dev

启动任何已安装的应用程序

来自分类Dev

注册已安装的应用程序

来自分类Dev

在Qt Android应用程序中使用Holo主题

来自分类Dev

在非GUI应用程序中使用Qt的利弊?

来自分类Dev

在Pure Qt应用程序中使用KDE系统主题

来自分类Dev

如何在Qt应用程序中使用Windows字体

来自分类Dev

在Qt GUI应用程序中使用AsmJit时出错

来自分类Dev

使用Qt安装程序框架创建我的应用程序安装程序

来自分类Dev

Rails 4在初始化器中使用应用程序帮助程序

来自分类Dev

Qt Creator-使用文件输入调试应用程序

来自分类Dev

如何获取已安装或已删除应用程序的名称?

来自分类Dev

在Codenameone应用程序中使用ttf文件的优缺点

Related 相关文章

  1. 1

    如何在Delphi XE应用程序中使用CHM HTML帮助文件?

  2. 2

    无法使用Qt Assistant从Qt应用程序内部获取自定义帮助文件以进行工作

  3. 3

    如何使用已安装的应用程序打开文件?

  4. 4

    在帮助文件(Gatsby)中使用env变量

  5. 5

    无法从delphi(.exe)应用程序打开网络驱动器上的帮助文件(.chm)

  6. 6

    即使未调用方法将方法添加到帮助文件中,Rails应用程序也会崩溃

  7. 7

    在Qt应用程序中使用dll

  8. 8

    QT Creator缺少帮助文件?

  9. 9

    如何在我的应用程序中使用HLP文件获取上下文相关帮助?

  10. 10

    如果在 Ubuntu 中,则使用 bash 文件检查已安装的应用程序

  11. 11

    无法在已编译的应用程序的视图中使用.cs文件

  12. 12

    无法在已编译的应用程序的视图中使用.cs文件

  13. 13

    使用硬件设备,但找不到已安装的应用程序

  14. 14

    如何使用appium从iPhone启动已安装的应用程序

  15. 15

    使用 django 标签检查已安装的 django 应用程序

  16. 16

    如何使用python帮助文件功能

  17. 17

    在本机应用程序中使用已编译的Java代码

  18. 18

    启动任何已安装的应用程序

  19. 19

    注册已安装的应用程序

  20. 20

    在Qt Android应用程序中使用Holo主题

  21. 21

    在非GUI应用程序中使用Qt的利弊?

  22. 22

    在Pure Qt应用程序中使用KDE系统主题

  23. 23

    如何在Qt应用程序中使用Windows字体

  24. 24

    在Qt GUI应用程序中使用AsmJit时出错

  25. 25

    使用Qt安装程序框架创建我的应用程序安装程序

  26. 26

    Rails 4在初始化器中使用应用程序帮助程序

  27. 27

    Qt Creator-使用文件输入调试应用程序

  28. 28

    如何获取已安装或已删除应用程序的名称?

  29. 29

    在Codenameone应用程序中使用ttf文件的优缺点

热门标签

归档