3

我正在 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>

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

4

1 回答 1

0

这个问题被问到已经五年了,但我刚刚想出了如何去做,所以我想我会分享我的发现。

除了将提到的@houbysoft 键添加到 Info.plist 之外,还需要手动将菜单项添加到调用 Help Viewer 的 Help 菜单。

所以示例代码(在 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"为您自己的锚的名称。

于 2016-12-01T02:09:01.870 回答