在Qt应用程序中注册帮助手册

Registering Help Book in Qt app

本文关键字:帮助 注册 Qt 应用程序      更新时间:2023-10-16

我正在Mac OS X上构建一个Qt应用程序,我决定创建一个帮助手册。我尝试使用官方文档,但是帮助手册没有出现在帮助菜单中。

帮助手册位于my.app/Contents/Resources/HC.help/。它本身似乎很好,我试着用HelpViewer直接打开它。App,打开正常

这就是我如何在my.app/Contents/Info.plist中注册它:

<key>CFBundleHelpBookFolder</key>
<string>HC.help</string>
<key>CFBundleHelpBookName</key>
<string>com.houbysoft.hc.help</string>

它仍然没有显示在我的应用程序的帮助菜单。怎么了?

这个问题已经问了五年了,但我刚刚想出了如何去做,所以我想我应该分享一下我的发现。

除了添加键@houbysoft提到的信息。,还需要手动将菜单项添加到调用帮助查看器的帮助菜单中。

那么示例代码(在初始化QMainWindow时):

QMenu *helpMenu = new QMenu("Help", menuBar());
helpMenu->addAction(tr("&XYZ Help..."), this, SLOT(showHelp()));

(或者您可以通过其他方式添加菜单项,例如使用Designer)

showHelp()方法:

void openHelp()
{
    CFBundleRef appBundle = CFBundleGetMainBundle();
    if (appBundle == NULL) {
        return;
    }
    CFStringRef myBookName = (CFStringRef)CFBundleGetValueForInfoDictionaryKey(appBundle, CFSTR("CFBundleHelpBookName"));
    if (!myBookName || CFGetTypeID(myBookName) != CFStringGetTypeID()) {
        return;
    }
    AHLookupAnchor(myBookName, CFSTR("Start"));
}

注意,我在文档的第一页添加了一个名为"Start"的锚。将"Start"替换为您自己的锚的名称